
Daan Leijen wrote:
I agree with you that in general we should avoid a preprocessor. However, in the DData case it is hard to see a different solution. Using a "mini module" to do the bit-fiddling won't work that well since
1) It is imperative for performance that the ghc "shiftRL#" gets inlined, which doesn't happen if it is in a separate module. 2) As part of the standard libraries, you can't have three extra modules for each system
I don't say that I *like* to use cpp here, but it is surely the easiest solution here -- not perfect, but the perfect solution would take an inappropiate amount of resources.
Hmm, wouldn't it be nice to have a "FastInt" library which re-bound the appropriate types and functions? Haskell libraries are chock-a-block with instances of "#ifdef __GHC__" which define things in terms of Int# instead of Int. We could simplify all those libraries if we did it just once, in one place. The problem, of course, is that the naive non-GHC user could write a library which used "FastInt" polymorphically, and write code that wasn't portable to GHC. I don't think there's an easy, magic solution there. Perhaps such a library would be named FastIntWhichIPromiseToTestWithGHC. -Jan-Willem Maessen
All the best, Daan.
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries