Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- readBin :: String -> Integer
- readBin [] = 0
- readBin str = (readBin $ init str) * 2 + (read [last str])
- parseBinNumber :: Parser LispVal
- parseBinNumber = do char '#'
- char 'b'
- input <- many1 $ oneOf "01"
- return $ Number $ readBin input
- parseOctNumber :: Parser LispVal
- parseOctNumber = do char '#'
- char 'o'
- input <- many1 $ oneOf "01234567"
- return $ Number $ fst $ head $ readOct input
- parseDecNumber :: Parser LispVal
- parseDecNumber = do char '#'
- char 'd'
- input <- many1 digit
- return $ Number $ read input
- parseHexNumber :: Parser LispVal
- parseHexNumber = do char '#'
- char 'x'
- input <- many1 $ oneOf "0123456789aAbBcCdDeEfF"
- return $ Number $ fst $ head $ readHex input
- parseDefaultNumber :: Parser LispVal
- parseDefaultNumber = do input <- many1 digit
- return $ Number $ read input
- parseNumber :: Parser LispVal
- parseNumber = parseBinNumber
- <|> parseOctNumber
- <|> parseDecNumber
- <|> parseHexNumber
- <|> parseDefaultNumber
Add Comment
Please, Sign In to add comment