| Number Integer
| String String
| Bool Bool
+ deriving Show
symbol :: Parser Char
symbol = oneOf "!#$%&|*+-/:<=>?@^_~"
_ -> Atom atom
parseNumber :: Parser LispVal
-parseNumber = many1 digit >>= \ ds ->
- let a = read ds
- in return $ Number a
+parseNumber = do ds <- many1 digit
+ let a = read ds
+ return $ Number a
parseExpr :: Parser LispVal
parseExpr = parseString
readExpr :: String -> String
readExpr input = case parse parseExpr "lisp" input of
Left err -> "No match: " ++ show err
- Right val -> "Found value"
+ Right val -> "Found value: " ++ show val
main :: IO ()
main = do
args <- getLine
putStrLn (readExpr args)
+ main