On 28/01/10 23:38, Iain Alexander wrote:
I'm looking for a way of specifying language extensions in a way which will
work in all versions of GHC from 6.4 onwards.
GHC 6.4 does not support the LANGUAGE pragma. Specifying language options in
the OPTIONS_GHC pragma starts to produce deprecation warnings in 6.10, and will
presumably eventually fail altogether.
Any sort of preprocessing at the beginning of a file appears to insert enough
noise to inhibit recognition of file-header pragmas. (Cpphs doesn't appear to
help here.) Attempting preprocessing inside a leading OPTIONS_GHC pragma fails
because it apparently attempts to interpret the pragma *before* invoking the
preprocessor.
The only remaining option I can see is to have a completely separate version of
the file for GHC 6.4. Have I missed anything?
There are a little cluster of bugs to do with this, see
http://hackage.haskell.org/trac/ghc/ticket/3457
We need to re-read the pragmas after preprocessing. Ironically though,
you will only be able to use this facility with a GHC that supports it,
so we'll see a lot of source files like
{-# LANGUAGE ... #-}
#if __GLASGOW_HASKELL__ >= 614
{-# LANGUAGE .. more .. #-}
#endif
because GHC before 6.14 will stop at the first #if. (that's assuming we
implement this for 6.14, it hasn't been done yet)
Cheers,
Simon
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users