I'm contributing to Alex, and it obviously depends on a lot of libraries and should compile for a lot of versions.
I need to use a function that is only available from GHC 7.6.1 to handle an error better. So I want to use an #if ...
to import said function, else, I'll deal with the error differently.
I've seen some:
#if __GLASGOW_HASKELL__ >= 610
import Control.Exception ( bracketOnError )
#endif
So I did:
#if __GLASGOW_HASKELL__ >= 761
import Text.Read ( readMaybe )
#endif
Thinking that 761
is an alias to GHC version 7.6.1
, when I build the cabal package and try it out, the function doesn't get imported, even though I use The Glorious Glasgow Haskell Compilation System, version 7.8.4.
So after using a program to try it out, I find out that 7.8.1
identifies in __GLASGOW_HASKELL__
as 708
.
{-# LANGUAGE CPP #-}
module Main where
#if __GLASGOW_HASKELL__ == 708
ver = "==708"
#else
ver = "/=708"
#endif
main = putStrLn $ ver
And running it:
$ runhaskell if.hs
==708
How can I know what value should I use for 7.6.1
, or is there a better way to deal with this?