
Andrew Coppin writes:
I wonder what the layout for that is... something like this?
case foo of patter1 | guard1 -> ... | guard2 -> ... pattern2 | guard3 -> ... | guard4 -> ...
Something like that should work. If the patterns are more indented than the 'case', and the guards are more indented than the patterns, then the layout rule should work fine. As always, once you get used to the way layout works, everything is pretty intuitive.
Well, I'll have to go try it...
Always a nice solution to these kinds of problems!
I always thought of guards as being a nice shorthand for if-expressions - but if they can affect the order of pattern matching, clearly they are more drastically different than I realised. (Generally, I never ever use 'em!)
A useful rule to remember with guards is that "once you cross the equals sign, you can't go back". So if one of your patterns matches and a guard on that pattern is true, that right-hand side will be evaluated and there is no way to fall back to another guard or pattern. -- -David House, dmhouse@gmail.com