strange implementation - Re: Bits Problem
Marc Ziegert
coeus@gmx.de
Sun, 6 Apr 2003 16:36:00 +0200
I'm confused.
Does it mean that objects basing on bits have to be of Num because of an =
default implementation that they don't use?
A List of Bits should be instance of Bits, too.
Instead of default imlementations that use Num functions, there could be =
an instance of all Integrals. (Integer is instance of Bits too, so there =
should not be any problem with rotations.)
class Bits a where ...
instance (Integral a) =3D> Bits a where ...
Am Sonntag, 6. April 2003 15:35 schrieb Glynn Clements:
> 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 =3D True
> > complement True =3D 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 =3D 1 `shift` i
> x `testBit` i =3D (x .&. bit i) /=3D 0