问题描述
我正在尝试构建我的项目,但遇到了一个非常奇怪的问题。我让我的朋友用 Chocolatey 安装 Haskell,当他用 cabal build
和 cabal run project
编译我的项目时,他遇到了我没有的以下错误:
Expr.hs:103:1: error:
Type applications in patterns are not yet supported
|
103 | evalVal env val @(HInteger _) = return $ val
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我认为 cabal 文件会处理依赖关系,但显然不会。粗略的搜索也证明是徒劳的,因为我什至找不到其他人有同样错误的例子。
我不确定问题是由于他在 ghc 9.0.1
和 cabal 3.4
而我在 ghc 8.8.3
和 cabal 3.2
还是由于不同操作系统,他是 Windows 和 I OSX。
我担心的是,如果我升级我的 ghc 和 cabal 版本,那么我会遇到这个错误,我将不得不重新安装所有第一次变得混乱和困难的东西
解决方法
事实证明这是 GHC 9.0 中的更改:Whitespace-sensitive !,~,@,and $
这是第二点:
f@x = y
Before:使用 as-pattern 将 f 和 x 都绑定到 y 的值绑定 之后:名为 (@) 的中缀函数
要恢复旧行为,请删除@ 前后的空格,如下所示:
f@x = x
所以如果你把它改成
let array2 = ['key1 value','key2 value']
它应该适用于两个编译器