bitSize/bitSizeMaybe (was: Proposal: Add hasBitSize to Data.Bits.Bits)

Herbert Valerio Riedel hvr at
Wed Sep 18 13:56:22 CEST 2013

On 2012-09-24 at 01:28:20 +0200, Henning Thielemann wrote:
>> On Wed, Aug 22, 2012 at 07:49:49PM -0400, Edward Kmett wrote:
>>> We want to add
>>>> class Bits b where
>>>>     bitSizeMaybe :: b -> Maybe Int
>>> and deprecate, but not remove bitSize this iteration, and make a separate
>>> class FiniteBits for things with a finite, fixed number of bits:
>>>> class Bits b => FiniteBits b where
>>>>    finiteBitSize :: b -> Int
>>>>    finiteBitSize = bitSize
>> I've just pushed a patch implementing what I think the conclusion was.
>> Please let me know if you think I got it wrong.
> My last comment was, that FiniteBits is not an appropriate name, and
> then we arrived at FixedBits:

As it stands, the current implementation state is at

Now I have two questions:

 1.) Currently, bitSizeMaybe and bitSize have no default implementation
     defined. Shall we define mutually recursive default implementations
     for these two functions to help smooth the transition?

     e.g. in the style (just an example, not an actual proposal) of:

       bitSize = fromJust . bitSizeMaybe
       bitSizeMaybe = Just . bitSize

 2.) As it's probably not to late to easily fix any bikeshedding/naming
     issues: Shall the naming remain as implemented?


More information about the Libraries mailing list