Bits typeclass law for LSB

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Bits typeclass law for LSB

Andrew Martin
The trac issue this is asking about is found here: https://ghc.haskell.org/trac/ghc/ticket/14839. I'm looking for any feedback from the broader community to see if the proposed law is incompatible with any important uses of Bits. The text of the trac issue is provided below:

The documentation for the Bits typeclass claims:

    Bits are numbered from 0 with bit 0 being the least significant bit.

However, there's no law specified in the typeclass that enforces this. I realized this recently because I've been adding the laws for Bits to a library of property tests I maintain: http://hackage.haskell.org/package/quickcheck-classes-0.3.3/docs/Test-QuickCheck-Classes.html#v:bitsLaws

In another package of mine, someone requested to add a Bits instance for a type but with the MSB considered bit 0. (https://github.com/andrewthad/haskell-ip/issues/29) I thought this would fail to satisfy a law of Bits, but it doesn't. So at the least, I was thinking we could add the following laws to FiniteBits:

    countTrailingZeros (bit 0) = 0
    countLeadingZeros (bit 0) = finiteBitSize undefined - 1

--
-Andrew Thaddeus Martin

_______________________________________________
Libraries mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries