在GHC 8.4之前的Haskell package builds中,我需要
import Data.Monoid ((<>))
• Variable not in scope:
(<>)
从GHC 8.4开始,我没有错误排除此导入。
这是为什么? (<>)
是否已在其他地方实现?对于以后不需要的GHC,进行此导入会有什么后果?是否可以有条件地将其仅用于较旧的GHC?
答案 0 :(得分:8)
(<>)
是否已在其他地方实现?是的,它是在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>
由于Data.Monoid
重新导出(<>)
,到目前为止,没有任何内容。如果我正确阅读了该建议,则没有删除该再出口的计划。
是的,感谢orome,请通过CPP参见此处conditional exclude it。
由于Semigroup
在提案的阶段2b中成为Monoid
的超类,并且是在GHC 8.4中完成的,因此您可以检查基本版本是否大于4.11.0.0。查找here。