X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FBit.hs;h=c01ae94b5563df50707a23c3e5dfc19b6257ebb6;hb=45ac9baca360d0f0dabe4576fb44c1634a50dbf7;hp=128b6f6c76a787d4de6327636a885543428f4e98;hpb=e8b41784eaa68049f7a7354916c9c9920050db70;p=hath.git diff --git a/src/Bit.hs b/src/Bit.hs index 128b6f6..c01ae94 100644 --- a/src/Bit.hs +++ b/src/Bit.hs @@ -1,6 +1,8 @@ -- | The Bit module contains the Bit data type, which is essentially a -- renamed Boolean, and some convenience functions. -module Bit +module Bit ( + Bit(..) + ) where import Test.QuickCheck ( @@ -11,7 +13,7 @@ import Test.QuickCheck ( data Bit = Zero | One - deriving (Eq) + deriving (Enum, Eq) instance Show Bit where show Zero = "0" @@ -22,14 +24,12 @@ instance Arbitrary Bit where arbitrary = elements [ Zero, One ] --- | Convert a Bit to an Int. -bit_to_int :: Bit -> Int -bit_to_int Zero = 0 -bit_to_int One = 1 +instance Ord Bit where + Zero <= Zero = True + Zero <= One = True + One <= Zero = False + One <= One = True --- | If we are passed a '0' or '1', convert it --- appropriately. Otherwise, default to Nothing. -bit_from_char :: Char -> Maybe Bit -bit_from_char '0' = Just Zero -bit_from_char '1' = Just One -bit_from_char _ = Nothing +instance Bounded Bit where + minBound = Zero + maxBound = One