Hi, Are there special formatting constraints for using guards in Hugs? My students are learning Haskell in lab and the following simple function sometimes fails
fact n | n == 0 = 1 | otherwise = n * (fact(n-1))
Hugs complains about an unexpected ; Sometimes code after a guarded expression fixes the problem. We've tried putting the | up against the > or underneath the parameter. The same code seems to work for some students but not for others. Any ideas? - Lea
Wittie
fact n | n == 0 = 1 | otherwise = n * (fact(n-1))
Hugs complains about an unexpected ;
Sometimes code after a guarded expression fixes the problem. We've tried putting the | up against the > or underneath the parameter. The same code seems to work for some students but not for others.
I would guess that it fails when there is a mixture of tabs and spaces before the different guards. Haskell insists that tabs are 8 chars wide, but many editors are configured to display tabs as 2 or 4 chars wide. Hence, code that looks in correct vertical alignment might well be indented oddly as far as the compiler is concerned. Regards, Malcolm
participants (2)
-
Malcolm Wallace -
Wittie