Proposal: Remove Num superclass of Bits
Bas van Dijk
v.dijk.bas at gmail.com
Sat Oct 15 20:00:21 CEST 2011
On 15 October 2011 19:23, Johan Tibell <johan.tibell at gmail.com> wrote:
> On Sat, Oct 15, 2011 at 3:56 AM, Roman Leshchinskiy <rl at cse.unsw.edu.au>
>> On 15/10/2011, at 11:11, Ian Lynagh wrote:
>> > On Sat, Oct 15, 2011 at 11:56:27AM +0200, Bas van Dijk wrote:
>> >> On 15 October 2011 00:01, Ian Lynagh <igloo at earth.li> wrote:
>> >>> Removing the Num superclass of Bits was also mentioned, but that would
>> >>> need its own proposal.
>> >> Ok, I would like to propose removing the Num superclass of Bits.
>> > Would we just remove default methods like
>> > bit i = 1 `shiftL` i
>> > x `testBit` i = (x .&. bit i) /= 0
>> > ?
>> The Num superclass is only needed to be able to say 0 and 1. Perhaps we
>> should just add the methods zero and one to Bits?
> That sounds reasonable.
> Libraries mailing list
> Libraries at haskell.org
We can also combine Gábor's and Roman's solutions to get both
portability and convenience:
zero, one :: a
default zero, one :: Num a => a
zero = 0
one = 1
This way, not existing instances need to be adapted.
Another problem is that the default implementation of popCount uses a '-':
popCount :: a -> Int
popCount = go 0
go !c 0 = c
go c w = go (c+1) (w .&. w - 1)
More information about the Libraries