Its a much simpler thing, but I would like to see a template haskell library and quasi-quoter that used a monad transformer instead of just Q.
On Thu, May 24, 2012 at 1:47 AM, Simon Peyton-Jones <[email protected]>wrote: > Maybe take a look at > http://hackage.haskell.org/trac/ghc/blog/Template%20Haskell%20Proposal > > | -----Original Message----- > | From: [email protected] [mailto:haskell-cafe- > | [email protected]] 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 > | [email protected] > | http://www.haskell.org/mailman/listinfo/haskell-cafe > > > > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
