[Haskell] pattern matching accross instance declarations

S. Alexander Jacobson alex at alexjacobson.com
Wed Dec 1 20:25:39 EST 2004


My point is that I want to be able to add new
toMyType definitions without having to modify some
central library file and I want the compiler to
warn me when I haven't defined one for each
instance.

-Alex-

On Thu, 2 Dec 2004, Ben Rudiak-Gould wrote:

> S. Alexander Jacobson wrote:
>
>  >   data MyExistantialType=forall v.(Show v)=>EType v
>  >
>  >   class MyExistentialTypeable a where
>  >    toMyType::String->MyExistantialType
>  >
>  >   instance MyExistentialTypeable String where
>  >    toMyType "String" = EType "foo"
>  >
>  >   instance MyExistentialTypeable Int where
>  >    toMyType "Int" = EType "bar"
>  >
>  >   tVal (EType v)=show v
>  >   main = print $ tVal $ toMyType "String"
>
> The type class isn't necessary here, since toMyType has the same type in
> every instance anyway (namely String->MyExistentialType). You can simply
> write
>
>    data MyExistantialType=forall v.(Show v)=>EType v
>
>    toMyType "String" = EType "foo"
>    toMyType "Int" = EType "bar"
>
>    tVal (EType v)=show v
>    main = print $ tVal $ toMyType "String"
>
> -- Ben
>

______________________________________________________________
S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com


More information about the Haskell mailing list