bit-array-0.1.0: library/BitArray/Parser.hs
module BitArray.Parser where
import BitArray.Prelude
import Text.ParserCombinators.ReadP
import Data.Char
digits :: ReadP [Char]
digits = munch isDigit
bitIndexes :: ReadP [Int]
bitIndexes = do
digitsChars <- digits
sequence $ do
(index, char) <- zip [0..] (reverse digitsChars)
case char of
'0' -> empty
'1' -> return (return index)
_ -> return empty
bits :: (Bits a, Num a) => ReadP a
bits = foldr (.|.) 0 . map bit <$> bitIndexes