]> gitweb.michael.orlitzky.com - hath.git/blobdiff - src/Bit.hs
Switch from test-framework to tasty.
[hath.git] / src / Bit.hs
index 3799516c04c4514dd1a9241d0ea25ba753789438..0f02fbff730728fd253e7d0c18bc9ac16d738e1a 100644 (file)
@@ -1,30 +1,34 @@
-module Bit where
+-- | The Bit module contains the Bit data type, which is essentially a
+--   renamed Boolean, and some convenience functions.
+module Bit (
+  Bit(..)
+  )
+where
 
-import Test.QuickCheck
+import Test.Tasty.QuickCheck (
+  Arbitrary,
+  arbitrary,
+  elements )
 
 
-data Bit = None | Zero | One
-         deriving (Eq)
+data Bit = Zero | One
+  deriving (Enum, Eq)
 
 instance Show Bit where
-    show None = "None"
-    show Zero = "0"
-    show One  = "1"
+  show Zero = "0"
+  show One  = "1"
 
 
 instance Arbitrary Bit where
-    arbitrary = elements [ Zero, One ]
-    coarbitrary _ = variant 0
+  arbitrary = elements [ Zero, One ]
 
 
-bit_to_int :: Bit -> Int
-bit_to_int None = -1
-bit_to_int Zero =  0
-bit_to_int One  =  1
+instance Ord Bit where
+  Zero <= Zero = True
+  Zero <= One  = True
+  One  <= Zero = False
+  One  <= One  = True
 
--- 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
+instance Bounded Bit where
+  minBound = Zero
+  maxBound = One