Bits Problem

Glynn Clements glynn.clements@virgin.net
Sun, 6 Apr 2003 14:35:45 +0100


Dominic Steinitz wrote:

> Can anyone explain this? Hugs doesn't complain.
> 
> Prelude> :set --version
> The Glorious Glasgow Haskell Compilation System, version 5.04.1
> 
> test.hs:5:
>     No instance for (Num Bool)
>     arising from the instance declaration at test.hs:5
>     In the instance declaration for `Bits Bool'
> 
> module Main(main) where
> 
> import Bits
> 
> instance Bits Bool where
>    complement False = True
>    complement True  = False

GHC's definition of Bits requires that instances of Bits are also
instances of Num.

This constraint is required for the default implementations of bit and
testBit:

    bit i               = 1 `shift` i
    x `testBit` i       = (x .&. bit i) /= 0

-- 
Glynn Clements <glynn.clements@virgin.net>