[Haskell-beginners] Case Expressions
Dean Herington
heringtonlacey at mindspring.com
Fri May 29 01:40:07 EDT 2009
And I'm not sure what going via integers (via `fromEnum`) buys you. Why not:
interToBasic :: Interval -> BasicInterval
interToBasic a
| a `elem` [MinorSecond, MajorSecond] = Second
| a `elem` [MinorThird, MajorThird] = Third
...
Dean
At 6:27 PM -0400 5/28/09, Brent Yorgey wrote:
>On Thu, May 28, 2009 at 05:53:43PM -0400, Nathan Holden wrote:
>>
> > interToBasic :: Interval -> BasicInterval
> > interToBasic a = if (b == 1 || b == 2) then Second
>> else if (b == 3 || b == 4) then Third
>> ..
>> where b = fromEnum a
>>
>> What I wanted to do, and figure is probably doable, but I can't seem to find
>> it, is to say something like
>>
>> case (fromEnum a) of
>> 1 || 2 -> Second
>> 3 || 4 -> Third
>> ..
>>
>> Is this doable? If so, what's the syntax?
>
>You can do this with pattern guards, like so:
>
>interToBasic a | b == 1 || b == 2 = Second
> | b == 3 || b == 4 = Third
> ...
> where b = fromEnum a
>
>You could also use b `elem` [1,2] as an alternative to b == 1 || b ==
>2 (especially nice when there are more than two options).
>
>-Brent
More information about the Beginners
mailing list