]> gitweb.michael.orlitzky.com - hath.git/blobdiff - src/Bit.hs
Allow apply_mask to take a Bit argument that will be used to replace the host bits.
[hath.git] / src / Bit.hs
index 1c7de7bf4169862cf791e8ebf6bd5e92751a4852..3799516c04c4514dd1a9241d0ea25ba753789438 100644 (file)
@@ -1,15 +1,30 @@
 module Bit where
 
-data Bit = Zero | One
-         deriving (Eq, Show)
+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 Zero = 0
-bit_to_int One  = 1
+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 Zero.
+-- default to None.
 bit_from_char :: Char -> Bit
 bit_from_char '0' = Zero
 bit_from_char '1' = One
-bit_from_char  _  = Zero
+bit_from_char  _  = None