
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... Thanks!, Ranjit. 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
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@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users