]> git.rmz.io Git - my-scheme.git/blobdiff - app/Main.hs
Using where for parsing inner characters
[my-scheme.git] / app / Main.hs
index 67ec8ddde92590ba20d677d2f92b7d59128fd58e..cea4c9b2f5e9f08230d49f837338d1e9cce484a7 100644 (file)
@@ -9,6 +9,7 @@ data LispVal = Atom String
              | Number Integer
              | String String
              | Bool Bool
+             deriving Show
 
 symbol :: Parser Char
 symbol = oneOf "!#$%&|*+-/:<=>?@^_~"
@@ -17,11 +18,11 @@ spaces :: Parser ()
 spaces = skipMany space
 
 parseString :: Parser LispVal
-parseString = do
-    char '"'
-    x <- many (noneOf "\"")
-    char '"'
-    return $ String x
+parseString = do char '"'
+                 x <- many innerChar
+                 char '"'
+                 return $ String x
+              where innerChar = noneOf "\""
 
 parseAtom :: Parser LispVal
 parseAtom = do
@@ -46,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