
Am Mittwoch 10 Februar 2010 21:52:48 schrieb kane96@gmx.de:
Hi, I want to add an element to a list inside a haskell file: mylist = [1,2,3,4] 0:mylist in Prelude it works fine, but when I do it in a file I get the error: parse error (possibly incorrect indentation) Failed, modules loaded: none. in a line after this two that doesn't exist
0:mylist is a plain value. At the ghci or hugs prompt, if you enter an expression (4, 3*7+5, [0 .. 10],...), that means "evaluate the expression and print the result" (unless it's a value of type IO a, then it means "execute this action"). In a source file, you write definitions, name = expression to be bound to name func arg1 arg2 = body etc. You can have pattern bindings in a source file, (a,b) = ([0 .. 100],True) -- defines a and b 0:mylist = map (`mod` 7) [14 .. 100] -- defines mylist as [1,2,3,4,5,6,0,1,...,1,2] 0:myotherlist = [4,5,6] {- will fail with ghci> myotherlist *** Exception: PatTest.hs:4:0-22: Irrefutable pattern failed for pattern 0 : myotherlist when demanded -} , so that's what the parser expected, a '=' and an expression which defines mylist. Since it didn't find a '=' on the same line, it tried the next (where it found end of file, another definition or whatever) where it reported the parse error. Probably you wanted mysecondlist = 0:mylist ?