[Haskell-cafe] How to use Template Haskell based on code that generated by another Template?

2013-07-03 Thread Magicloud Magiclouds
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


Re: [Haskell-cafe] How to use Template Haskell based on code that generated by another Template?

2013-07-03 Thread adam vogt
On Wed, Jul 3, 2013 at 2:25 AM, Magicloud Magiclouds
magicloud.magiclo...@gmail.com 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


Re: [Haskell-cafe] How to use Template Haskell based on code that generated by another Template?

2013-07-03 Thread Magicloud Magiclouds
Yes, I misunderstood the generated code and splice shown in error message.
Thanks.


On Wed, Jul 3, 2013 at 11:04 PM, adam vogt vogt.a...@gmail.com wrote:

 On Wed, Jul 3, 2013 at 2:25 AM, Magicloud Magiclouds
 magicloud.magiclo...@gmail.com 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