Type of an HsExpr

Ranjit Jhala jhala at cs.ucsd.edu
Wed May 25 02:14:29 CEST 2011


> (My application is a haskell to java compiler, btw;
> I need the type for the proper use of generics in java.)

In that case why not just use the types attached with the CoreExprs? 

  http://goto.ucsd.edu/~rjhala/ghc/html/libraries/ghc-7.1.20110517/CoreUtils.html#v:exprType

Just use GHC to crunch your haskell source to Core, and then use exprType?

I have been wrestling with a similar issue (extracting source
level types with minimal effort) a much simpler setting. The 
hack I use is to tweak the deSugaring process to add SrcSpan 
to each desugared expression:

1. I've added a "CoreLoc SrcSpan" constructor to the Note type
   http://goto.ucsd.edu/~rjhala/ghc/html/libraries/ghc-7.1.20110517/CoreSyn.html#v:CoreLoc

2. I've changed:  dsLExpr so that it wraps a SrcSpan around the desugared expression
   http://goto.ucsd.edu/~rjhala/ghc/html/libraries/ghc-7.1.20110517/src/DsExpr.html#dsLExpr 

3. Now you can walk over the final CoreExpr, and build a map from SrcSpan -> Type 
   (exprType gives you the type of each coreExpr), and when you "join" that with 
   Source-Expression-SrcSpan map then you should get the types of the (located) 
   expressions ...

Its a total hack but it allows one to operate only with the simple CoreExprs :)
 



> 
> Thanks again,
> Sven
> 
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users




More information about the Glasgow-haskell-users mailing list