[Haskell-beginners] Case Expressions

Nathan Holden nathanmholden at gmail.com
Fri May 29 10:38:23 EDT 2009


Yes. I did. In fact, that's what it looks like. But in general I also derive
Enum, and use Ints instead, because that's how I conveniently switch between
notes and intervals.

On Fri, May 29, 2009 at 10:27 AM, Thomas Friedrich <info at suud.de> wrote:

> Hi Nathan,
>
> do you mean something like the following?
>
> data Interval = Unison
>             | MinorSecond
>             | MajorSecond
>             | MinorThird
>             | MajorThird
>               deriving (Show)
>
> data BasicInterval = BasicUnison
>                  | Second
>                  | Third
>                  | Fourth
>                    deriving (Show)
>
> inter2basic :: Interval -> BasicInterval
> inter2basic x = case x of
>                 Unison -> BasicUnison
>                 MinorSecond -> Second
>                 MajorSecond -> Second
>                 MinorThird -> Third
>                 MajorThird -> Third
>
>
> Happy Hacking,
> Thomas
>
>
>
> Nathan Holden wrote:
>
>> I've been playing with my musical interval problem from before, and I got
>> a little further, but I came up with a problem.
>>
>> I have two types-- Interval and BasicInterval.
>>
>> Interval has 12 constructors, Unison, MinorSecond, MajorSecond,
>> MinorThird, et cetera.
>> BasicInterval has 8 constructors, BasicUnison, Second, Third, Fourth, and
>> so on.
>>
>> I want to be able to convert between them somewhat;
>>
>> I have function interToBasic, which at the moment looks like:
>>
>> 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?
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://www.haskell.org/mailman/listinfo/beginners
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20090529/0d25bb03/attachment.html


More information about the Beginners mailing list