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.

2011/7/22 Patrick Browne <[email protected]>

> 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
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to