我有数据类型:
data Stuff s = Stuff { name :: s, idx :: Int }
并希望通过以下实现将其变成一个幺半群:
tmappend :: Stuff s -> Stuff t -> Stuff (s,t)
tmappend s1 s2 = Stuff (name s1, name s2) (idx s1 + idx s2)
tzero :: Stuff ()
tzero = Stuff () 0
请注意,可以通过mconcat
.
但是 tmappend 目前违反了mappend
. 这实际上是一个幺半群吗?是否可以将其制成具有更好类型表示的类型。