Какова практическая ценность всех этих оболочек нового типа в 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
использование обертки, чем тот, что выше?