В названии говорится все. foldl1
и foldl'
оба обобщены на Foldable
, а foldl1'
- нет. Это просто недавний контроль? Или это выбор дизайна?Почему foldl1 'не обобщен для Foldable?
Тип foldl1'
является
foldl1' :: (a -> a -> a) -> [a] -> a
Я ожидал, что он имеет тот же тип, foldl1
:
foldl1 :: Foldable t => (a -> a -> a) -> t a -> a
Я также вижу, что foldl1'
экспортируется Data.List
, но не Data.Foldable
. Возможно, это связано?
Ни 'foldl1', ни' foldl1'' принадлежит к 'Foldable'. Они принадлежат к 'Foldable1', классу непустых складных контейнеров. Кто-то допустил ошибку и поставил 'foldl1' в' Foldable'. Я не думаю, что у кого-то есть сердце, чтобы усугубить эту ошибку. – dfeuer
@dfeuer: было введение «Складного», которому не предшествовал длительный период обсуждения и опросов? Было ли это упущено или это какой-то компромисс? – ljedrz
@ljedrz Я думаю, вы смешаете дискуссию об использовании 'Foldable' в Prelude с оригинальным дизайном (если есть)' Foldable'. – Cactus