[Haskell-cafe] does the order of splice definitions matter in template haskell, or is this a bug?

Ian Lynagh igloo at earth.li
Wed Oct 31 15:43:01 EDT 2007


Hi Thomas,

On Wed, Oct 31, 2007 at 03:27:20PM -0400, Thomas Hartman wrote:
> I have a situation where
> 
> ... stuff...
> 
> $(expose ['setState, 'getState]
> f = SetState
> 
> compiles but
> 
> f = SetState
> $(expose ['setState, 'getState]
> 
> doesn't compile, with error: Not in scope: data constructor 'SetState.
> 
> Is this a bug?

Not if SetState is created by the splice or defined after the splice,
no.

GHC typechecks up to the splice before running the splice, and then
continues typechecking everything past the splice afterwards. So if f is
defined before the splice then it must typecheck without the results of
the splice (or anything later in the file).


Thanks
Ian



More information about the Haskell-Cafe mailing list