簡體   English   中英

為什么僅對較舊的GHC才需要Data.Monoid。(<>)?

[英]Why do I need Data.Monoid.(<>) only for older GHC?

在我的Haskell包 建立之前GHC 8.4,我需要

import Data.Monoid ((<>))

避免

• Variable not in scope:
    (<>)

從GHC 8.4開始,我沒有錯誤排除此導入。

為什么是這樣? (<>)已在其他地方實現? 對於以后不需要的GHC,進行此導入會有什么后果? 是否可以有條件地將其僅用於較舊的GHC?

為什么是這樣?

由於半群Monoid提案

(<>)已在其他地方實現?

是的,它在GHC.Base定義:

[nix-shell:~]$ ghci
GHCi, version 8.4.3: http://www.haskell.org/ghc/  :? for help
Prelude> :t (<>)
(<>) :: Semigroup a => a -> a -> a
Prelude> :info (<>)
class Semigroup a where
  (<>) :: a -> a -> a
  ...
        -- Defined in ‘GHC.Base’
infixr 6 <>
Prelude>

對於以后不需要的GHC,進行此導入會有什么后果?

截至目前,沒有,因為Data.Monoid (<>) 如果我正確閱讀了該建議,則沒有刪除該再出口的計划。

可以僅對較舊的GHC進行有條件的進口嗎?

是的,由於orome,通過CPP可以在此處看到有條件排除它

作為Semigroup成為一個超類Monoid提案的2B階段和在GHC 8.4完成后,你可以檢查基地的比4.11.0.0越大版本,你可以看一下這里

暫無
暫無

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

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