What version of the GHC code are you looking at? The parser is currently stored 
in compiler/parser/Parser.y.pp (note the pp) and doesn’t have these lines. As 
far as I know, there is no way to refer to OpenKind from source.

You’re absolutely right about the type of `undefined`. `undefined` (and 
`error`) have magical types. GHC knows that GHC.Err defines an `undefined` 
symbol and gives it its type by fiat. There is no way (I believe) to reproduce 
this behavior.

If you have -fprint-explicit-foralls and -fprint-explicit-kinds enabled, 
quantified variables of kind * are not given kinds in the output. So, the lack 
of a kind annotation tells you that `a`’s kind is *. Any other kind (assuming 
these flags) would be printed.

I hope this helps!
Richard

On Apr 15, 2014, at 7:39 PM, Conal Elliott <co...@conal.net> wrote:

> I see ‘#’ for unlifted and ‘?’ for open kinds in compiler/parser/Parser.y:
> akind   :: { IfaceKind }
>         : '*'              { ifaceLiftedTypeKind }      
>         | '#'              { ifaceUnliftedTypeKind }
>         | '?'              { ifaceOpenTypeKind }
>         | '(' kind ')'     { $2 }
> 
> kind    :: { IfaceKind }
>         : akind            { $1 }
>         | akind '->' kind  { ifaceArrow $1 $3 }
> However, I don’t know how to get GHC to accept ‘#’ or ‘?’ in a kind 
> annotation. Are these kinds really available to source programs.
> 
> I see that undefined has an open-kinded type:
> 
> *Main> :i undefined
> undefined :: forall (a :: OpenKind). a      -- Defined in ‘GHC.Err’
> Looking in the GHC.Err source, I just see the following:
> 
> undefined :: a
> undefined =  error "Prelude.undefined"
> However, if I try similarly,
> 
> q :: a
> q = error "q"
> I don’t see a similar type:
> 
> *X> :i q
> q :: forall a. a        -- Defined at ../test/X.hs:12:1
> 
> I don't know what kind 'a' has here, nor how to find out.
> 
> -- Conal
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users@haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to