You can do that using the Typeable class and possibly the Dynamic type.
(Data.Typeable and Data.Dynamic in base)
When you have:
foo :: (Typeable a, Num a) => a -> a
foo x = case (cast x :: Maybe Int) of
Just x' -> x + 12
_ -> x
foo will accept every instance of Num but will add 12 to it only if it is an Int.
Dynamic wraps an instance of Typeable.
Is it possible to access type information and perform either of the
following in a Haskell program?
1) Find the type/class of a variable
e.g. a type predicate: is y of-type A, or is y of-Class A
2) Assert the type of a variable
e.g. if y.length > 100 then y is of type big.
Regards,
Pat
This message has been scanned for content and viruses by the DIT Information Services E-Mail Scanning Service, and is believed to be clean. http://www.dit.ie
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe