Semigroup
正在成为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
我无法掌握。你能发现我的方法有什么问题吗?