[Haskell] pattern matching accross instance declarations

S. Alexander Jacobson alex at alexjacobson.com
Wed Dec 1 18:44:05 EST 2004

Doing read/show on existential types would be a
lot easier if pattern matching worked *accross*
instance declarations and not only within them

For example, this code produces an "Ambiguous type
variable" GHC error, but it would be really
helpful if it didn't:

   data MyExistantialType=forall v.(Show v)=>EType v

   class MyExistentialTypeable a where

   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"

I know Haskell has a general prohibition on
defining functions in multiple locations, but
instance declarations already violate it.  Why not
go all the way?

My current approach is manually writing
lookup functions in addition to per-instance
functions and that is both annoying and


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

More information about the Haskell mailing list