Re: [Haskell-cafe] Typed TemplateHaskell?
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 simo...@microsoft.comwrote: Maybe take a look at http://hackage.haskell.org/trac/ghc/blog/Template%20Haskell%20Proposal | -Original Message- | From: haskell-cafe-boun...@haskell.org [mailto:haskell-cafe- | boun...@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@haskell.org | http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Typed TemplateHaskell?
Maybe take a look at http://hackage.haskell.org/trac/ghc/blog/Template%20Haskell%20Proposal | -Original Message- | From: haskell-cafe-boun...@haskell.org [mailto:haskell-cafe- | boun...@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@haskell.org | http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
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@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe