X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FBit.hs;h=e3d90e420e2bffbbe97accd2ad08246731aacde4;hb=942b8ef3bc5830ca0defa62342d55550aea59934;hp=128b6f6c76a787d4de6327636a885543428f4e98;hpb=e8b41784eaa68049f7a7354916c9c9920050db70;p=hath.git diff --git a/src/Bit.hs b/src/Bit.hs index 128b6f6..e3d90e4 100644 --- a/src/Bit.hs +++ b/src/Bit.hs @@ -11,7 +11,7 @@ import Test.QuickCheck ( data Bit = Zero | One - deriving (Eq) + deriving (Enum, Eq) instance Show Bit where show Zero = "0" @@ -22,13 +22,24 @@ instance Arbitrary Bit where arbitrary = elements [ Zero, One ] +instance Ord Bit where + Zero <= Zero = True + Zero <= One = True + One <= Zero = False + One <= One = True + +instance Bounded Bit where + minBound = Zero + maxBound = One + + -- | Convert a Bit to an Int. bit_to_int :: Bit -> Int bit_to_int Zero = 0 bit_to_int One = 1 -- | If we are passed a '0' or '1', convert it --- appropriately. Otherwise, default to Nothing. +-- appropriately. Otherwise, return Nothing. bit_from_char :: Char -> Maybe Bit bit_from_char '0' = Just Zero bit_from_char '1' = Just One