module RealDice.Convert.BinaryString
( boolToBin,
boolsToBin,
binToBool,
binToBools,
stringToBools,
)
where
boolToBin :: Bool -> Char
boolToBin :: Bool -> Char
boolToBin Bool
False = Char
'0'
boolToBin Bool
True = Char
'1'
boolsToBin :: [Bool] -> String
boolsToBin :: [Bool] -> String
boolsToBin = (Bool -> Char) -> [Bool] -> String
forall a b. (a -> b) -> [a] -> [b]
map Bool -> Char
boolToBin
binToBool :: Char -> Bool
binToBool :: Char -> Bool
binToBool Char
'0' = Bool
False
binToBool Char
'1' = Bool
True
binToBool Char
x =
String -> Bool
forall a. HasCallStack => String -> a
error
( String
"Invalid binary character: '"
String -> String -> String
forall a. [a] -> [a] -> [a]
++ [Char
x]
String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
"' (valid binary characters are '0' and '1')"
)
binToBools :: String -> [Bool]
binToBools :: String -> [Bool]
binToBools = (Char -> Bool) -> String -> [Bool]
forall a b. (a -> b) -> [a] -> [b]
map Char -> Bool
binToBool
stringToBools :: String -> [Bool]
stringToBools :: String -> [Bool]
stringToBools = [Bool] -> String -> [Bool]
acc []
where
acc :: [Bool] -> String -> [Bool]
acc :: [Bool] -> String -> [Bool]
acc [Bool]
boolList [] = [Bool]
boolList
acc [Bool]
boolList (Char
'0' : String
xs) = [Bool] -> String -> [Bool]
acc ([Bool]
boolList [Bool] -> [Bool] -> [Bool]
forall a. [a] -> [a] -> [a]
++ [Bool
False]) String
xs
acc [Bool]
boolList (Char
'1' : String
xs) = [Bool] -> String -> [Bool]
acc ([Bool]
boolList [Bool] -> [Bool] -> [Bool]
forall a. [a] -> [a] -> [a]
++ [Bool
True]) String
xs
acc [Bool]
boolList (Char
_ : String
xs) = [Bool] -> String -> [Bool]
acc [Bool]
boolList String
xs