X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FBit.hs;h=3799516c04c4514dd1a9241d0ea25ba753789438;hb=1e69264c4a60fef95d0ad013f95b082b3db106ab;hp=1c7de7bf4169862cf791e8ebf6bd5e92751a4852;hpb=64dfebebdecd1119ab8345a6de34597f6a878a98;p=hath.git diff --git a/src/Bit.hs b/src/Bit.hs index 1c7de7b..3799516 100644 --- a/src/Bit.hs +++ b/src/Bit.hs @@ -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