parsing types

Ranjit Jhala jhala at
Sun Apr 24 03:26:55 CEST 2011

Hi Daniel -- 

that was a good lead, with a little digging around, I found 

	hscTcExpr :: GhcMonad m => HscEnv -> String -> m Type

which almost gets the job done, if only I could call it with 
the appropriate HscEnv. The one I get using 

	getSession :: GhcMonad m => m HscEnv

appears rather impoverished, as it fails to find the usual 
prelude names like 

	Not in scope: `undefined'
	Not in scope: `error'

(though it does succeed on the expression "5" yielding the type)

"forall t_a4eW. (GHC.Num.Num t_a4eW) => t_a4eW"

Does anyone have a clue as to how to get a hold on an appropriate 
environment? (I would have thought that the HscEnv obtained _after_
compiling some file "f" would populated with at least the names 
needed to compile "f") that is, if I do:

      	cm0  <- compileToCoreSimplified f 
	env  <- getSession

then the resulting "env" would suffice, but unfortunately thats not 
the case...



On Apr 23, 2011, at 11:54 AM, Daniel Peebles wrote:

> I don't have an answer for you, but you might want to look at what :k does in ghci, since that needs to parse a type.
> On Sat, Apr 23, 2011 at 2:06 PM, Ranjit Jhala <jhala at> wrote:
> Hi all,
> can someone give me a hint as to the best way to parse a type from a string.
> Ideally, I'd like a function
>        stringType :: String -> Maybe Type
> or possibly,
>        stringType :: (GhcMonad m) => String -> m (Maybe Type)
> such that,
>        stringType s == Just t
> if in the current GHC context the string s is the name of the type t. For
> example, I'd like:
>        stringType "Int"
> to return a value equal to intTy (from TysWiredIn). My investigations have
> led me to
>        parseType :: P (LHsType RdrName)
> and I suspect that with some work (mainly creating an appropriate PState,
> and mapping the name back, I can extract what I want, but I was wondering
> if there is some simpler route that I've overlooked.
> Thanks!
> Ranjit.
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at

More information about the Glasgow-haskell-users mailing list