]> git.rmz.io Git - my-scheme.git/blobdiff - app/Main.hs
Use do block again
[my-scheme.git] / app / Main.hs
index 6daf522b2c86598881760fa72c242009d8516092..67ec8ddde92590ba20d677d2f92b7d59128fd58e 100644 (file)
@@ -34,10 +34,17 @@ parseAtom = do
                 _    -> Atom atom
 
 parseNumber :: Parser LispVal
-parseNumber = liftM (Number . read) $ many1 digit
+parseNumber = do ds <- many1 digit
+                 let a = read ds
+                 return $ Number a
+
+parseExpr :: Parser LispVal
+parseExpr = parseString
+        <|> parseAtom
+        <|> parseNumber
 
 readExpr :: String -> String
-readExpr input = case parse (spaces >> symbol) "lisp" input of
+readExpr input = case parse parseExpr "lisp" input of
     Left err -> "No match: " ++ show err
     Right val -> "Found value"