2 import Text.ParserCombinators.Parsec hiding (spaces)
3 import System.Environment
5 data LispVal = Atom String
7 | DottedList [LispVal] LispVal
13 symbol = oneOf "!#$%&|*+-/:<=>?@^_~"
16 spaces = skipMany space
18 parseString :: Parser LispVal
21 x <- many (noneOf "\"")
25 parseAtom :: Parser LispVal
27 a <- letter <|> symbol
28 b <- many (letter <|> digit <|> symbol)
31 readExpr :: String -> String
32 readExpr input = case parse (spaces >> symbol) "lisp" input of
33 Left err -> "No match: " ++ show err
34 Right val -> "Found value"
39 putStrLn (readExpr args)