如何解决较旧的 Cabal 或 Haskell 项目能否在较新版本的 Cabal 和 Haskell 上运行?
我正在尝试构建我的项目,但遇到了一个非常奇怪的问题。我让我的朋友用 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']
它应该适用于两个编译器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。