
Hi all, I high school programmer and just started learning Haskell. Haskell so far seems to be an awesome language. I began reading "Learn you Haskell for a Great Good!" I am confused with list comprehension, as I am coming from an imperative programming language (Java). From my understanding, list comprehension is synonymous to Java's for-loop and what not. For example: let xs = [1,2,3,4,5] [x | x <- xs] I believe it is saying that "bound x to xs, and do (print) x." Another example: let rightTriangles' = [ (a,b,c) | c <- [1..10] , b <- [1.. c], a <- [1.. b], a^2 + b^2 == c^2, a+b+c == 24] ghci > rightTriangles' [(6 ,8 ,10)] I believe it is saying "store c with the numbers 1-10, b is length of c, and a is the length of b. Print the answer (a,b,c) which satisfies a^2 + b^2 == c^2, a+b+c == 24. It may seem that I am answering my own question, but when it becomes more complicated or I am ask to do specific tasks that involves list comprehensions, I do not know how to read or compose one. Second, can someone do a line by line breakdown of this code? The book does a sub-par job explaining it. -- Creating our own sum function sum ' :: (Num a) => [a] -> a sum ' [] = 0 sum ' (x:xs) = x + sum ' xs Summed up: How did you learn Haskell and how long did it take before you became competent? This is my second day and I am already running into problems. I have to re-read things where as Java it came easy to me. Any book or tutorials? Can someone explain list comprehension and my recursion code? Thanks, - Cody p.s The questions so far have been over my head (is this a " true beginner's email list"?), I'll try to answer what I can.