[Haskell-cafe] Point-free style in guards
Neil Mitchell
ndmitchell at gmail.com
Tue Jul 22 13:27:07 EDT 2008
Hi
> Why such a style doesn't work, so I must write ugly code like that:
>
> outStanza a | (isMessage a) = outMessage a
> | (isPresence a) = outPresence a
> | (isIQ a) = outIQ a
You can make it slightly prettier, since the brackets are not necessary:
outStanza a | isMessage a = outMessage a
| isPresence a = outPresence a
| isIQ a = outIQ a
Although I suspect that outMessage crashes if isMessage returns False?
And perhaps outMessage is written as outMessage (Message a b) = ...
In which case, I'd write:
outStanza (Message a b) = ...
And then the code no longer looks ugly, uses pattern matching nicely,
requires no "is..." functions and won't crash if things like
outMessage are called incorrectly.
[Note, everything beyond the no need for brackets is a bit of a guess,
just possible ideas to think about]
Thanks
Neil
More information about the Haskell-Cafe
mailing list