[Haskell-cafe] why typeRepArgs (typeOf "hello") is [Char] ?

Ross Mellgren rmm-haskell at z.odi.ac
Mon Feb 2 15:18:34 EST 2009


The type of "hello" is String, which is [Char], which is really []  
Char (that is, the list type of kind * -> *, applied to Char).

1, 'a', and True are all simple types (I'm sure there's a more  
particular term, maybe "monomorphic"?) with no type arguments.

[] has a type argument, Char.

Consider:

Prelude Data.Typeable> typeRepArgs (typeOf (Just 1))
[Integer]

and

Prelude Data.Typeable> typeRepArgs (typeOf (Left 'a' :: Either Char  
Int))
[Char,Int]

-- typeRepArgs is giving you the arguments of the root type  
application, [] (list) in your case, Maybe and Either for the two  
examples I gave.

Does this make sense?

-Ross

On Feb 2, 2009, at 3:09 PM, minh thu wrote:

> Hello,
>
> With Data.Typeable :
>
> *Graph> typeRepArgs (typeOf 1)
> []
> *Graph> typeRepArgs (typeOf 'a')
> []
> *Graph> typeRepArgs (typeOf True)
> []
> *Graph> typeRepArgs (typeOf "hello")
> [Char]
>
> I don't understand why the latter is not []. Could someone explain  
> it ?
>
> Thank you,
> Thu
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list