[Haskell-cafe] Replacing CPP [was: Current status of Mavericks CPP]
ben.franksen at online.de
Wed Apr 16 12:48:55 UTC 2014
Sven Panne wrote:
> 2014-04-16 12:34 GMT+02:00 Ben Franksen <ben.franksen at online.de>:
>> [...]Has nobody ever written a paper about how to extend Haskell with the
>> features we actually need from CPP? I think general macro replacement
>> like CPP offers is not on the list, right? IIUC, CPP is used in Haskell
>> libraries almost exclusively for conditional compilation. [...]
Yes, I expected there are libraries out there that use more of CPP's
features, just not very many. And note, I'm not proposing to deprecate CPP
any time soon, just to offer a sane(r) alternative ASAP.
> Perhaps some template Haskell magic might work nowadays, bug there was
> no TH at all when the bindings started, and I am not sure if I should
> tie this package to GHC.
Agreed, you should not have to.
> The real solution is generating the binding
> via the OpenGL XML spec, anyway, but I somehow have to do some real
> (non-Haskell) work for real money. ;-)
I can relate to that, believe me. In the meantime, CPP will stay around for
some time, for special use cases like yours. Its use would just no longer be
encouraged for cases where it is not needed.
BTW, I do not think that mixing conditional compilation and general macro
replacements in the same tool is particularly good design. That CPP is used
for both is an unfortunate accident of history and we should not try to
> My point is: Do we really know that conditional compilation is *the*
> use case? I remember that in ancient days macros were used to generate
> instances etc. Make things as simple as possible, but not simpler.
Well, what everybody said whenever the question came up in the last years
was that this is the killer feature we absolutely can't live without.
But you are right, we should find out!
There are people on this list who grep the whole of hackage in a matter of
minutes whenever someone (seriously) proposes some non-compatible change to
see who many libraries would be affected. (Any volunteers?) My guess is that
no more than a few hands full of the hackage packages use more than
conditional compilation, but I may be completely wrong about that.
"Make it so they have to reboot after every typo." -- Scott Adams
More information about the Haskell-Cafe