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
        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"

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
error-prone.

-Alex-

______________________________________________________________
S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to