You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《48小时自制Scheme》第二章代码编译报错求助

解决Haskell编译时的Parse error in pattern问题

你的编译错误根源是代码中使用了非标准的长破折号(−),而非Haskell语法要求的半角箭头符号(->),编译器无法识别这类符号导致解析失败。

修正后的完整代码

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"

需要修改的位置

  • 替换所有的−为->(包括类型签名和case分支的箭头)
  • 替换args <− getArgs中的−为<-(绑定操作符)

新手注意事项

Haskell对语法符号的要求非常严格,所有语法相关的符号必须是半角字符。从PDF或网页复制代码时很容易引入全角符号或特殊字符,建议手动输入关键语法部分,避免类似问题。

内容的提问来源于stack exchange,提问作者HelloWorld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:25:30