[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