【发布时间】:2017-10-22 18:10:44
【问题描述】:
我是 Haskell 的新手,遇到了这个臭名昭著的错误。
我已经查阅了这些链接: Haskell: parse error on input `|'Haskell parse error on input '|'Haskell - parse error on input `|'Why complains Haskell parse error on input `|' in this Function?Haskell parse error on input `|'
真正让我吃惊的是,我完全复制了我大学老师在课堂上给我们的代码:
data TreeInt = Leaf Int
| Node TreeInt Int TreeInt
foo :: TreeInt -> Int
foo arg =
case arg of
| Leaf x = x
| Node tLeft x tRight = x
我知道问题在 foo arg 下面,因为下面的代码可以编译:
data TreeInt = Leaf Int
| Node TreeInt Int TreeInt
foo :: TreeInt -> Int
foo arg = undefined
确切的错误是:hw.hs:6:4: error: parse error on input ‘|’
这让我相信它在第 6 行 (| Leaf)。
我尝试过的:
- 使用模式匹配转换代码(出现另一个错误)
- 将 case 与 foo arg 放在同一行
- 添加更多/更少的空格
- 添加“let”,因为某些版本的 GHC 没有它会出现问题(没有变化)
【问题讨论】:
标签: haskell