繁体   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