[Haskell] pattern matching accross instance declarations
Ben Rudiak-Gould
Benjamin.Rudiak-Gould at cl.cam.ac.uk
Wed Dec 1 19:35:10 EST 2004
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
More information about the Haskell
mailing list