]> git.rmz.io Git - my-scheme.git/blobdiff - app/Main.hs
Tail recursing main function
[my-scheme.git] / app / Main.hs
index 58017c55305aa90095ba786e78ed009df4209040..233fa6c9e85a81dfb98934e6624baa1391a14489 100644 (file)
@@ -9,6 +9,7 @@ data LispVal = Atom String
              | Number Integer
              | String String
              | Bool Bool
+             deriving Show
 
 symbol :: Parser Char
 symbol = oneOf "!#$%&|*+-/:<=>?@^_~"
@@ -34,7 +35,9 @@ 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
@@ -44,9 +47,10 @@ 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