我正试图在48小时内完成自己的计划。但是我在第6页已经遇到问题了。
提供的代码是:
module Main where
import System.Environment
import Text.ParserCombinators.Parsec hiding ( spaces )
main :: IO ()
main = do
args <− getArgs
putStrLn (readExpr ( args !! 0))
symbol :: Parser Char
symbol = oneOf "!$%&|*+-/:<=?>@^_~#"
readExpr :: String −> String
readExpr input = case parse symbol "lisp" input of
Left err −> "No match: " ++ show err
Right val −> "Found value"
当我运行以下命令
时ghc -o parser simpleparser1.hs
文件称为simpleparser1.hs
。我得到以下错误消息。考虑到这些代码来自一本经典的书,我觉得这很奇怪。
[1 of 1] Compiling Main ( simpleparser1.hs, simpleparser1.o )
simpleparser1.hs:15:5: error:
Parse error in pattern: Left err −> "No match: " ++ show err
|
15 | Left err −> "No match: " ++ show err
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我确实看了这个,这个和这个帖子在stackoverflow。我对Haskell完全不熟悉,所以欢迎任何帮助。
PDF包含奇数unicode符号,如−
,这不是一个正常的破折号,而是一个unicode"减号"。要解决这个问题,只需替换它们:
readExpr :: String -> String
readExpr input = case parse symbol "lisp" input of
Left err -> "No match: " ++ show err
Right val -> "Found value"