Proposal: Remove Num superclass of Bits
This ticket summarizes the discussion on the proposal to remove the Num
superclass of the Bits
type class.
The proposal is to:
- Remove the
Num
superclass of theBits
type class. - Remove the default implementations of
bit
,testBit
andpopCount
since they use methods ofNum
. - Export the following convenience functions from
Data.Bits
:
bitDefault :: (Bits a, Num a) => Int -> a
bitDefault i = 1 `shiftL` i
testBitDefault :: (Bits a, Num a) => a -> Int -> Bool
testBitDefault x i = (x .&. bit i) /= 0
popCountDefault :: (Bits a, Num a) => a -> Int
popCountDefault = go 0
where
go !c 0 = c
go c w = go (c+1) (w .&. w - 1) -- clear the least significant
Attached are tickets for base
and ghc
.
Trac metadata
Trac field | Value |
---|---|
Version | 7.2.1 |
Type | Task |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | libraries/base |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |