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
Numsuperclass of theBitstype class. - Remove the default implementations of
bit,testBitandpopCountsince 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 |