簡體   English   中英

我應該使用GHC Haskell擴展嗎?

[英]Should I use GHC Haskell extensions or not?

在我學習Haskell時,我發現在現實代碼中使用了很多語言擴展 作為初學者,我應該學會使用它們,還是應該不惜一切代價避免使用它們? 我看到它破壞了與Haskell 98的兼容性,並且僅將代碼限制為幾乎GHC。 但是,如果我在Hackage上瀏覽軟件包,我發現大多數軟件包都是GHC的。

那么,社區對使用語言擴展的態度是什么?

如果擴展的使用是可以的,我如何區分我可以“安全地”使用的擴展(那些可能成為下一個Haskell標准的一部分的擴展)與那些主要是“實驗性”的擴展? 例如,我認為-XDisambiguateRecordFields很好用,但未來很可能會得到支持嗎?

有一些GHC擴展太好了,不能沒有。 我最喜歡的是

  • 多參數類型
  • 范圍類型變量
  • 更高等級的類型
  • 廣義代數數據類型(GADT)

其中真正重要的是多參數類型。

一些GHC擴展非常具有推測性和實驗性,您可能需要謹慎使用。 識別穩定且可信的擴展的一種好方法是查看是否將其包含在Haskell Prime中Haskell Prime希望是Haskell 98的后續版本。

我的第二個Don Stewart的建議是,應該使用源文件中的LANGUAGE pragma標記每個擴展名。 不要使用命令行選項啟用擴展。

是的,請適當使用擴展程序。

但一定要有意識地啟用它們 - 只有在您決定需要它們時才有意義 通過{-# LANGUAGE Rank2Types #-} (例如)在每個模塊的基礎上執行此操作。

一般來說,人們確實大量使用GHC擴展,因為它們非常有用而且Haskell 98已經很老了。 一旦有更新的標准,人們可能會更加努力堅持下去。

您可以在此處找到下一個標准的提案狀態。

這里的其他答案都很好。 我想補充一點,GHC擴展並不像它們可能的那樣具有未來的脆弱性(*),因為GHC似乎是最流行的Haskell編譯器,我不認為它會很快發生變化。

(*)與“面向未來”相反

暫無
暫無

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

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