id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
5593	Proposal: Remove Num superclass of Bits	basvandijk		"This ticket summarizes the [http://www.haskell.org/pipermail/libraries/2011-October/016899.html discussion] on the proposal to remove the `Num` superclass of the `Bits` type class.

The proposal is to:

 * Remove the `Num` superclass of the `Bits` type class.

 * Remove the default implementations of `bit`, `testBit` and `popCount` since they use methods of `Num`.

 * 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`."	task	closed	normal	7.6.1	libraries/base	7.2.1	fixed			Unknown/Multiple	Unknown/Multiple	None/Unknown	Unknown				
