Вопросы с тегом «fold»

В функциональном программировании свертка, также известная как сокращение, накопление или катаморфизм, представляет собой тип функции высшего порядка, которая рекурсивно применяет преобразование к структуре данных, «сворачивая» ее до итогового значения.

7
разница между foldLeft и reduLeft в Scala
Я узнал основную разницу между foldLeftиreduceLeft foldLeft: начальное значение должно быть передано reduceLeft: принимает первый элемент коллекции в качестве начального значения выдает исключение, если коллекция пуста Есть ли другая разница? Есть какая-то конкретная причина иметь два метода с похожей функциональностью?


7
Последствия фолд против фолд (или фолд)
Во-первых, Real World Haskell , который я читаю, говорит никогда не использовать, foldlа вместо этого использовать foldl'. Поэтому я верю в это. Но я не знаю, когда использовать foldrпротив foldl'. Хотя я вижу структуру их работы по-разному, но я слишком глуп, чтобы понять, когда «что лучше». Я думаю, мне кажется, …


4
foldl против поведения foldr с бесконечными списками
В коде функции myAny в этом вопросе используется foldr. Он прекращает обработку бесконечного списка, когда предикат удовлетворен. Переписал с помощью foldl: myAny :: (a -> Bool) -> [a] -> Bool myAny p list = foldl step False list where step acc item = p item || acc (Обратите внимание, что …

4
В чем разница между свертыванием и уменьшением?
Пытался изучить F #, но запутался, пытаясь различить свертку и свертку . Кажется, что Fold делает то же самое, но принимает дополнительный параметр. Есть ли законная причина для существования этих двух функций или они предназначены для людей с разным опытом? (Например: строка и строка в C #) Вот фрагмент кода, …

9
Что такое «питонический» эквивалент функции «складки» из функционального программирования?
Каков наиболее идиоматический способ добиться в Haskell чего-то вроде следующего: foldl (+) 0 [1,2,3,4,5] --> 15 Или его эквивалент в Ruby: [1,2,3,4,5].inject(0) {|m,x| m + x} #> 15 Очевидно, Python предоставляет reduceфункцию, которая является реализацией fold, точно так же, как указано выше, однако мне сказали, что «питонический» способ программирования заключался …

4
Как узнать, когда использовать складывание влево, а когда - вправо?
Я знаю, что fold-left создает деревья с наклоном влево, а fold-right создает деревья с наклоном вправо, но когда я тянусь к сгибу, я иногда зацикливаюсь на вызывающих головную боль мыслях, пытаясь определить, какой тип сгиба подходит. Обычно я закрываю всю проблему и перехожу к реализации функции сгиба применительно к моей …


9
Написание foldl с помощью foldr
В Real World Haskell , Глава 4. Функциональное программирование : Напишите foldl с помощью foldr: -- file: ch04/Fold.hs myFoldl :: (a -> b -> a) -> a -> [b] -> a myFoldl f z xs = foldr step id xs z where step x g a = g (f a …

3
Возможно ли реализовать эту функцию слова без шага постобработки после свертывания?
Real World Haskell, глава 4, стр. 98 печати спрашивает, wordsможно ли реализовать с помощью сгибов, и это тоже мой вопрос: Является ли это возможным? Если нет, то почему? Если это так, как? Я придумал следующее, которое основано на идее, что каждый непробел должен быть добавлен перед последним словом в списке …

3
Какие знания или обучение необходимы для того, чтобы кто-то записал определение сгиба, как это? [закрыто]
Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 7 месяцев назад . В последнее время я пытаюсь использовать Haskell в некоторых моих реальных …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.