Re: [Haskell-cafe] How to use Template Haskell based on code that generated by another Template?
Yes, I misunderstood the generated code and splice shown in error message. Thanks. On Wed, Jul 3, 2013 at 11:04 PM, adam vogt wrote: > On Wed, Jul 3, 2013 at 2:25 AM, Magicloud Magiclouds > wrote: > > Then I got > > Illegal variable name: `UserPassword' > > When splicing a TH declaration: > > Hi Magicloud, > > GHC seems to be trying to tell you that variables are lowercase in > haskell. Since you don't have code, I'm guessing your error is from > doing something like: > > > wrong1 = print ($(dyn "Just") 5) > > wrong2 = print ($(varE 'Just) 5) > > Which is a compile time error since you apparently can't pass a Name > which is capitalized to `VarE :: Name -> Exp' > > Any of these options work. They use the `ConE :: Name -> Exp' > constructor instead: > > > opt1 = print ($(conE (mkName "Just")) 5) > > opt2 = print ($(conE 'Just) 5) > > opt3 = print ($( [| Just |]) 5 ) > > -- > Adam > -- 竹密岂妨流水过 山高哪阻野云飞 And for G+, please use magiclouds#gmail.com. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] How to use Template Haskell based on code that generated by another Template?
On Wed, Jul 3, 2013 at 2:25 AM, Magicloud Magiclouds wrote: > Then I got > Illegal variable name: `UserPassword' > When splicing a TH declaration: Hi Magicloud, GHC seems to be trying to tell you that variables are lowercase in haskell. Since you don't have code, I'm guessing your error is from doing something like: > wrong1 = print ($(dyn "Just") 5) > wrong2 = print ($(varE 'Just) 5) Which is a compile time error since you apparently can't pass a Name which is capitalized to `VarE :: Name -> Exp' Any of these options work. They use the `ConE :: Name -> Exp' constructor instead: > opt1 = print ($(conE (mkName "Just")) 5) > opt2 = print ($(conE 'Just) 5) > opt3 = print ($( [| Just |]) 5 ) -- Adam ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] How to use Template Haskell based on code that generated by another Template?
I have a yesod project, which generated, say, UserPassword in module Model. Then I wrote my template code which generate a piece of code to use UserPassword. I imported Model in my code. Then I got Illegal variable name: `UserPassword' When splicing a TH declaration: -- 竹密岂妨流水过 山高哪阻野云飞 And for G+, please use magiclouds#gmail.com. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe