Hi Roelof, The function itself will not work. Do you have a working Haskell environment? If so, please try the function out first and let us know what errors you see. I have a feeling from this and previous questions that you're trying to understand the code just by trying to reading it. You really need to execute it. Since you're posting here I presume you have access to a computer, or at least the Web. Have you used http://tryhaskell.org/? That said I'll try and guess what "find" is supposed to do. It seems to take a key "k" and output the values associated with the key. It also appears that "t" is a list of key-value pairs eg. [("a", "aardvard"), ("a", "armadillo"), ("b", bull")]. From your definition of "find" it is different from a standard lookup table in that it will will return all values associated with a key instead of just the first. Eg. find "a" [("a", "aardvark"), ("a", "armadillo"), ("b", bull")] == ["aardvark", "armadillo"]. This definition of "find": find :: (Eq a) => a -> [(a,b)] -> [b] find k t = [v' | (k', v') <- t , k == k'] seems to be what you want. Firstly you're chunking the list comprehension incorrectly, the above is the same as: find k t = [v' | (k',v') <- t, k == k'] The first part of the comprehension "(k',v') <- t" gets a tuple out of the list and assigns first part to "k'" and the second to "v'". The second part "k == k'" places a constraint on the list so that only tuples whose first element is equal to the key passed in "k" are allowed. The result of the comprehension, the v' before the "|" character indicates that the second element of the tuple should be output. Taking the above definition try to trace by hand the execution of "find". It'll give you a better idea of how result is generated. -deech On Fri, Jul 22, 2011 at 2:14 PM, Roelof Wobben <rwobben@hotmail.com> wrote:
Hello,
Sorry for asking so much but I really want to understand this.
I have the function find k t [v, (k',v') <- t,k = v]
Let's say k = false and t = [false, true, false, true]
Then It will be find "false" ["false", "true", "false", "true] But where on earth are t,k = v and (k', v') come from ?
Roelof
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners