[Haskell-beginners] Offside rule for function arguments?
Isaac Dupree
ml at isaac.cedarswampstudios.org
Mon Aug 23 15:17:47 EDT 2010
On 08/23/10 15:02, Brandon S Allbery KF8NH wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 8/23/10 14:56 , Isaac Dupree wrote:
>> On 08/23/10 02:33, John Smith wrote:
>>> Why doesn't Haskell allow something like this?
>>>
>>> fac 0 = 0
>>> 1 = 1
>>> x = x * fac (x-1)
>>>
>>> This would be clearer than repeating the function name each time, and
>>> follow the same pattern as guards and case.
>>
>> Layout is detected and parsed when and only when it is preceded by 'where',
>> 'let', 'do', or 'of'. So Haskell would have to have some such keyword to
>
> I think the next question is "so how do guards work?"
Weirdly! It's a bit like "|" is a prefix operator, at least when found
in this relevant parsing-context (and not e.g. in a list comprehension).
The guards don't need to line up either. I admit that I wasn't too
happy when I found out how guards parse. "|" looks way too symmetric of
a character for it to do that... Linebreaks are not required! :
fac x | x==0 = 0 | x==1 = 1 | otherwise = x * fac (x-1)
More information about the Beginners
mailing list