module Bit where
+import Test.QuickCheck
+
+
data Bit = None | Zero | One
- deriving (Eq, Show)
+ 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