Какова практическая ценность всех этих оболочек нового типа в Data.Monoid?

При взгляде наData.MonoidВижу разныеnewtype обертки, такие какAll, Sum, или жеProduct, которые кодируют различные виды моноидов. Однако, пытаясь использовать эти обертки, я не могу не задаться вопросом, какая польза от использования ихData.Monoid двойники. Например, сравните довольно громоздкое суммирование

print $ getSum $ mconcat [ Sum 33, Sum 2, Sum 55 ]

по сравнению с более лаконичным идиоматическим вариантом

print $ sum [ 33, 2, 55 ]

Но какой в ​​этом смысл? Есть ли практическая ценность, имея все этиnewtype фантики? Есть ли более убедительные примерыMonoid newtype использование обертки, чем тот, что выше?

Ответы на вопрос(5)

Ваш ответ на вопрос