]> gitweb.michael.orlitzky.com - hath.git/blobdiff - src/Bit.hs
Rewrite everything to use Maybe instead of None constructors.
[hath.git] / src / Bit.hs
index 1c7de7bf4169862cf791e8ebf6bd5e92751a4852..128b6f6c76a787d4de6327636a885543428f4e98 100644 (file)
@@ -1,15 +1,35 @@
-module Bit where
+-- | The Bit module contains the Bit data type, which is essentially a
+--   renamed Boolean, and some convenience functions.
+module Bit
+where
+
+import Test.QuickCheck (
+  Arbitrary,
+  arbitrary,
+  elements
+  )
+
 
 data Bit = Zero | One
-         deriving (Eq, Show)
+  deriving (Eq)
+
+instance Show Bit where
+  show Zero = "0"
+  show One  = "1"
+
 
+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
-
--- If we are passed a '0' or '1', convert it appropriately. Otherwise,
--- default to Zero.
-bit_from_char :: Char -> Bit
-bit_from_char '0' = Zero
-bit_from_char '1' = One
-bit_from_char  _  = Zero
+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.
+bit_from_char :: Char -> Maybe Bit
+bit_from_char '0' = Just Zero
+bit_from_char '1' = Just One
+bit_from_char  _  = Nothing