Semigroup Monoid Proposal的兼容代码

时间:2018-03-17 21:36:42

标签: haskell typeclass monoids semigroup

Semigroup is becoming a superclass of Monoid。我确实阅读了该页面上有关编写兼容代码的建议,但我既不想有条件地依赖semigroups包,也不想将我的mappend代码放在顶级声明中。

我现在的尝试是

#if MIN_VERSION_base(4,9,0)
import Data.Semigroup
#endif

#if MIN_VERSION_base(4,9,0)
instance Semigroup Foo
#endif

instance Monoid Foo where
    mempty = …
    mappend a b = …

Semigroup类似乎有一个默认的<> = mappend所以我不需要在那里实现任何东西,但我想我也可以写出来。

此代码将来会继续有效吗?

它目前在我的设置中有效,但我无法测试每个可能的编译器和基础包,尤其是未来的包。在Monoid BattleMode之后,我的进一步计划是什么。你能发现我的方法有什么问题吗?

0 个答案:

没有答案