# Bits Problem

**Dominic Steinitz
**
dominic.steinitz@blueyonder.co.uk

*Sun, 6 Apr 2003 14:07:48 +0100*

Is this a recent change? I've downloaded Ian Lynagh's DES module and it
doesn't compile because of this. I assume it used to. I don't see the
rationale for this. I can see Bool can be an instance of Bit but why does it
need to be an instance of Num?
Dominic Steinitz
----- Original Message -----
From: "Glynn Clements" <glynn.clements@virgin.net>
To: "Dominic Steinitz" <dominic.steinitz@blueyonder.co.uk>
Cc: <haskell@haskell.org>
Sent: Sunday, April 06, 2003 2:35 PM
Subject: Re: Bits Problem
>*
*>* 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>
*