Maciej Piechotka schrieb:
Many of these problems are solved by preprocessor intervention in C/C++,
but there is often no need to do so. You could also write system
dependent modules, where the right module for your system is included by
the build system. I hope the build system does not count as a
preprocessor. In Haskell it is however still no fun to support multiple
versions of the base libraries, not to speak of different compilers -
and their set of libraries.
Not quite. While I agree that "the *frequent* need for a preprocessor
shows omissions in (the design of) a language." it is not necessary the
case. Preprocessor may be useful if:
- there is a new beatyful feature in newer version of compiler but you
still want to have backward compatibility.
- there are compiler or platform dependant elements. For example if you
write a driver in Haskell you may want to share code as much as possible
but you need to know 1) the size of registers and 2) the platform you're
writing as Windows have quite different API then Linux or BSD.
- You need to enable/disable features at build-time. It is not frequent
at closed-source system but it is frequent on OpenSource systems. For
example I might need to have minimal program for embedded system but
with full feature set it likly conquer the desktops
Unfortunately, the original question is still not answered.
Haskell-Cafe mailing list