[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
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
More information about the Haskell
mailing list