[Haskell-cafe] understanding typeable
Dan Doel
dan.doel at gmail.com
Sun Apr 12 18:07:18 EDT 2009
On Sunday 12 April 2009 3:42:35 pm Anatoly Yakovenko wrote:
> i am trying to figure out how typeable works, so i have this data type
>
> data Foo = FooC Int
> deriving (Data, Typeable, Show)
>
> So how come this works:
> > funResultTy (typeOf ((+) 1)) (typeOf 1)
>
> Just Integer
>
> but this doesnt:
> > funResultTy (typeOf FooC) (typeOf 1)
>
> Nothing
>
> FooC is of type t -> u and 1 is of type t so the result should be u?
> I don't think t and u need to be the same since
>
> > funResultTy (typeOf (\a -> a:[1])) (typeOf 1)
>
> Just [Integer]
>
> works fine. So given a constructor, how come i cant seem to construct
> a type out of it?
Judging from the other types, 'typeOf 1' is defaulting to Integer. FooC, per
your declaration, has type 'Int -> Foo'. So, you're probably asking it what
happens when you apply an Int -> Foo to an Integer, which would be a type
error, and explains the Nothing, I think.
-- Dan
More information about the Haskell-Cafe
mailing list