X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FBit.hs;h=128b6f6c76a787d4de6327636a885543428f4e98;hb=e8b41784eaa68049f7a7354916c9c9920050db70;hp=a4241bc2a72b8a062649def5d1daa40f0a13f030;hpb=041d33c0e5ac9c0e9733f42cd96aa2fba07a043f;p=hath.git diff --git a/src/Bit.hs b/src/Bit.hs index a4241bc..128b6f6 100644 --- a/src/Bit.hs +++ b/src/Bit.hs @@ -1,29 +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 +import Test.QuickCheck ( + Arbitrary, + arbitrary, + elements + ) -data Bit = None | Zero | One - deriving (Eq) +data Bit = Zero | One + deriving (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 ] + arbitrary = elements [ Zero, One ] +-- | Convert a Bit to an Int. bit_to_int :: Bit -> Int -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 None. -bit_from_char :: Char -> Bit -bit_from_char '0' = Zero -bit_from_char '1' = One -bit_from_char _ = None +-- | 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