On Sep 19, 2006, at 3:28 PM, Neil Mitchell wrote:
Hi,
Welcome back! Since Data.Bits is not defined in the Haskell 1998
standard, are we free to change the implementation of Data.Bits?
No! If you do things like this, randomly changing the semantics of
functions, people will come round to your house with burning pitch
forks!
Or, if they reside across the Water, they might simply refuse to use
my program. The problem with Data.Bits.rotate, rotateL and rotateR
for Integers is redundancy: they are the same functions as shift,
shiftL and shiftR respectively. The unfortunate (and possibly buggy)
consequence for the unwary might be an unexpected change in the
operation of a function that uses rotate, rotateL or rotateR over
types in class Num when their Int32's have been promoted to Integers
to cover overflow. Otherwise it would be much easier to simply leave
it as is (for an array of doubles, where bitwise operations are
actually performed arithmetically, rotations would be difficult).
If you want to have functions with new semantics, its probably a good
idea to give them new names, or do something else to stop changing
existing programs.
Certainly. The reason I asked about Data.Bits was that it is not
defined in the Haskell98 standard--I couldn't add IntegerRotate to
Prelude, and Data.Bits is a library. In any case, I think the
general response is that (a) specious idea or (b) already done in
other libraries.
-Pete
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users