[Haskell-cafe] Typed TemplateHaskell?
Simon Peyton-Jones
simonpj at microsoft.com
Thu May 24 10:47:37 CEST 2012
Maybe take a look at
http://hackage.haskell.org/trac/ghc/blog/Template%20Haskell%20Proposal
| -----Original Message-----
| From: haskell-cafe-bounces at haskell.org [mailto:haskell-cafe-
| bounces at haskell.org] On Behalf Of Tillmann Rendel
| Sent: 23 May 2012 18:20
| To: Haskell Café
| Subject: Re: [Haskell-cafe] Typed TemplateHaskell?
|
| Hi Ilya,
|
| Ilya Portnov wrote:
| > As far as can I see, using features of last GHC one could write typed
| > TH library relatively easily, and saving backwards compatibility.
| >
| > For example, now we have Q monad and Exp type in "template-haskell"
| > package. Let's imagine some new package, say "typed-template-haskell",
| > with new TQ monad and new polymorphic type Exp :: * -> *. Using last
| > GHC's features, one will easily write something like "expr :: Exp
| > String", which will mean that "expr" represents a string expression.
| > And we will need a new function, say runTQ :: TQ a -> Q a (or some
| > more complicated type), which will turn TypedTemplateHaskell's
| > constructs into plain TH.
|
| That would be a good thing to have. But it might be quite hard to
| implement. For example, I guess you might want to have functions like
| this one:
|
| apply :: Exp (a -> b) -> Exp a -> Exp b
|
| This function takes two typed expressions and produces an application.
| The types ensure that the generated application will typecheck. Cool.
|
| But can you do the same thing for lambdas? Lambdas create functions, so
| the type would be something like the following:
|
| lambda :: ... -> Exp (a -> b)
|
| But what would you put instead of the ...?
|
| I fear that overall, you would have to reimplement Haskell's type system
| in Haskell's type system. Which sounds like a cool thing to do, but
| maybe not so easily.
|
| Tillmann
|
| _______________________________________________
| 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