Стоит ли использовать складки в пакетах Turtle или Foldl?
У меня возникли некоторые трудности с использованием Turtle, и только через несколько минут, глядя на непонятные сообщения об ошибках, понял, что я использовал неправильно fold
функция.
https://hackage.haskell.org/package/turtle-1.5.8/docs/Turtle-Shell.html https://hackage.haskell.org/package/foldl-1.4.0/docs/src/Control.Foldl.html
Почему происходит столкновение имен? Я не верю, что это совпадение, но я не могу понять это. Являются ли эти по сути различные виды складок?
Чтобы быть конкретным, я хотел сложить имена файлов потока в одно имя, используя максимальное время модификации.
1 ответ
(Прежде всего, складки, о которых мы говорим здесь, не являются функциями foldr foldl foldl 'Data.Foldable
они из пакета foldl, который концептуально связан сfoldl'
функция отData.Foldable
, как своего рода универсальное обобщение, но имеет отдельные определения.)
Fold
Тип данных представляет собой строгую операцию с сохранением состояния для выполнения на входящей последовательности значений. это Applicative
instance позволяет запустить две операции, объединенные в одной последовательности значений. Fold
у них есть замечательное свойство, что они не знают, откуда берутся ценности.
Каждый тип источника будет иметь свою собственную функцию для ввода значений. Эти функции могут иметь общее имя fold
, но это не проблема, потому что типичная рекомендация - импортировать квалифицированные пакеты.
Функция сгиба из пакета foldl подает содержимое любого Foldable
контейнер. Сгиб от черепахи кормит результаты Shell
, Потоковые библиотеки, такие как "каналы", имеют свои собственные адаптеры.