假设我有一个幺半群定义如下:
data TotalLine = TotalLine { totalQuantity :: Int, orderTotal :: Float }
instance Monoid TotalLine where
mempty = zero
mappend = add
由于totalQuantity和orderTotal都是数字,它们还在(+)下形成了一个幺半群。 有什么方法可以定义
add :: TotalLine -> TotalLine -> TotalLine
所以,我可以只在每个字段上传播mappend调用,而不必手动定义类似
add line1 line2 =
TotalLine {
totalQuantity = totalQuantity line1 + totalQuantity line2,
orderTotal = orderTotal line1 + orderTotal line2
}