module Bit where import Test.QuickCheck data Bit = None | Zero | One deriving (Eq) instance Show Bit where show None = "None" show Zero = "0" show One = "1" instance Arbitrary Bit where arbitrary = elements [ Zero, One ] coarbitrary _ = variant 0 bit_to_int :: Bit -> Int bit_to_int None = -1 bit_to_int Zero = 0 bit_to_int One = 1 -- If we are passed a '0' or '1', convert it appropriately. Otherwise, -- default to None. bit_from_char :: Char -> Bit bit_from_char '0' = Zero bit_from_char '1' = One bit_from_char _ = None