簡體   English   中英

較舊的 Cabal 或 Haskell 項目能否在較新版本的 Cabal 和 Haskell 上運行?

[英]Can older Cabal or Haskell projects be run on newer versions of Cabal and 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 和我的 OSX。

我擔心的是,如果我升級我的 ghc 和 cabal 版本,那么我會遇到這個錯誤,我將不得不重新安裝第一次混亂和困難的所有東西

事實證明這是 GHC 9.0 中的一個變化: 空格敏感、~、@ 和 $

這是那里的第二點:

f@x = y

之前:使用 as 模式將 f 和 x 綁定到 y 的值綁定之后:中綴 function 命名為 (@)

要恢復舊行為,請刪除 @ 周圍的前導和尾隨空格,如下所示:

f@x = x

所以如果你把它改成

evalVal env val@(HInteger _)      = return $ val

它應該適用於兩個編譯器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM