微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

较旧的 Cabal 或 Haskell 项目能否在较新版本的 Cabal 和 Haskell 上运行?

如何解决较旧的 Cabal 或 Haskell 项目能否在较新版本的 Cabal 和 Haskell 上运行?

我正在尝试构建我的项目,但遇到了一个非常奇怪的问题。我让我的朋友用 Chocolatey 安装 Haskell,当他用 cabal buildcabal 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.1cabal 3.4 而我在 ghc 8.8.3cabal 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 举报,一经查实,本站将立刻删除。