]> git.rmz.io Git - my-scheme.git/blobdiff - app/Main.hs
`deriving` from `Show` is a really easy way to print values
[my-scheme.git] / app / Main.hs
index 88ae7f7ff2ff0b439dcb452d24c2be9a66e55e41..01fd038650e2e9277b72b919ba357b7acffefd19 100644 (file)
@@ -9,6 +9,7 @@ data LispVal = Atom String
              | Number Integer
              | String String
              | Bool Bool
              | Number Integer
              | String String
              | Bool Bool
+             deriving Show
 
 symbol :: Parser Char
 symbol = oneOf "!#$%&|*+-/:<=>?@^_~"
 
 symbol :: Parser Char
 symbol = oneOf "!#$%&|*+-/:<=>?@^_~"
@@ -34,9 +35,9 @@ parseAtom = do
                 _    -> Atom atom
 
 parseNumber :: Parser LispVal
                 _    -> 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
 
 parseExpr :: Parser LispVal
 parseExpr = parseString
@@ -46,7 +47,7 @@ parseExpr = parseString
 readExpr :: String -> String
 readExpr input = case parse parseExpr "lisp" input of
     Left err -> "No match: " ++ show err
 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
 
 main :: IO ()
 main = do