readExpr :: String -> String
readExpr input = case parse parseExpr "lisp" input of
Left err -> "No match: " ++ show err
- Right val -> "Found value: " ++ show val
+ Right val -> "Found value: " ++ showVal val
+
+showVal :: LispVal -> String
+showVal (Atom atom) = atom
+showVal (Number n) = show n
+showVal (String str) = "\"" ++ str ++ "\""
+showVal (Character c) = "'" ++ [c] ++ "'"
+showVal (Bool True) = "#t"
+showVal (Bool False) = "#f"
main :: IO ()
main = do