[Haskell-cafe] Conditional compilation for different versions of GHC?

Jinjing Wang nfjinjing at gmail.com
Sun Nov 28 04:18:40 CET 2010


Thanks for explaining, it's a nice trick.

On Sun, Nov 28, 2010 at 11:16 AM, Antoine Latter <aslatter at gmail.com> wrote:
> On Sat, Nov 27, 2010 at 8:38 PM, Jinjing Wang <nfjinjing at gmail.com> wrote:
>> Hi Michael, you are absolutely correct, cabal did set the flags automatically.
>>
>> To sum up, here's what needs to be done:
>>
>> * add `flag ghc7` as a field in cabal
>> * add:
>>
>>    if flag(ghc7)
>>        build-depends:   base                      >= 4.3      && < 5
>>        cpp-options:     -DGHC7
>>    else
>>        build-depends:   base                      >= 4        && < 4.3
>>
>>   in library field in cabal
>>
>> * add `{-# LANGUAGE CPP #-}` in source file
>> * add
>>
>>    #if GHC7
>>    x
>>
>>    #else
>>    y
>>
>>    #endif
>>
>>
>>  Hi Antonine, I don't know how to not set those fields in the
>> constructor.. as a QQ noob, I'm just hacking on some legacy code. This
>> code doesn't compile in GHC7, so I have to do this trick.
>>
>> * https://github.com/nfjinjing/mps/blob/master/src/MPS/TH.hs
>>
>
> Something like:
>
> myQuoter = QuasiQuoter {
>  quoteExp = expQuoter,
>  quotePat = patQuoter
>  }
>
> Will work in either version, but it will leave the un-set fields set
> to `undefined`, so you'll get a compile error if you try to use them.
>
> I haven't tested this, but I've done it with other record types.
>
> Take care,
> Antoine
>



-- 
jinjing


More information about the Haskell-Cafe mailing list