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

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

196
разница между foldLeft и reduLeft в Scala

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

188
Scaffold.of () вызывается с контекстом, который не содержит Scaffold

Как вы можете видеть, моя кнопка находится внутри корпуса Скаффолда. Но я получаю это исключение: Scaffold.of () вызывается с контекстом, который не содержит Scaffold. import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget...

155
Последствия фолд против фолд (или фолд)

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

124
foldl против поведения foldr с бесконечными списками

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

121
В чем разница между свертыванием и уменьшением?

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

119
Что такое «питонический» эквивалент функции «складки» из функционального программирования?

Каков наиболее идиоматический способ добиться в 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, точно так же, как указано...

99
Как узнать, когда использовать складывание влево, а когда - вправо?

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

79
Написание 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 x) Приведенный выше код меня сильно смутил, и кто-то...

14
Возможно ли реализовать эту функцию слова без шага постобработки после свертывания?

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

9
Какие знания или обучение необходимы для того, чтобы кто-то записал определение сгиба, как это? [закрыто]

Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 7 месяцев назад . В последнее время я пытаюсь использовать...