X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FBit.hs;h=0f02fbff730728fd253e7d0c18bc9ac16d738e1a;hb=eee156f562f9c1c1194a67cef12f146304d88ce9;hp=5c8c5aa25903ba4332db63faaf55ccfd0e2e0f44;hpb=e1d16438b44ecd962565756a828c9ed8014cf894;p=hath.git diff --git a/src/Bit.hs b/src/Bit.hs index 5c8c5aa..0f02fbf 100644 --- a/src/Bit.hs +++ b/src/Bit.hs @@ -1,17 +1,18 @@ -- | 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 ( +import Test.Tasty.QuickCheck ( Arbitrary, arbitrary, - elements - ) + elements ) data Bit = Zero | One - deriving (Eq) + deriving (Enum, Eq) instance Show Bit where show Zero = "0" @@ -22,14 +23,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, return 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