Запитання з тегом «fold»

У функціональному програмуванні складка, також по-різному відома як зменшення, накопичення або катаморфізм, є типом функції вищого порядку, яка рекурсивно застосовує перетворення до структури даних, "згортаючи" її до підсумкового значення

7
різниця між foldLeft та reduLeft у Scala
Я дізнався основну різницю між foldLeftтаreduceLeft foldLeft: початкове значення має бути передано reduLeft: приймає перший елемент колекції як початкове значення викидає виняток, якщо колекція порожня Чи є якась інша різниця? Якась конкретна причина мати два способи з подібною функціональністю?


7
Наслідки foldr vs. foldl (або foldl ')
По-перше, справжній світ Хаскелл , який я читаю, говорить, що ніколи не використовувати, foldlа замість цього використовувати foldl'. Тож я їй довіряю. Але я туманно, коли використовувати foldrпроти foldl'. Хоча я бачу структуру того, як вони працюють по-різному, викладену переді мною, я занадто дурний, щоб зрозуміти, коли "що краще". Я …


4
згорнути проти поведінки складки з нескінченними списками
Код функції 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функцію, яка є реалізацією складки, точно так само, як вище, однак мені сказали, що "пітонічним" способом програмування було уникати …

4
Звідки ви знаєте, коли використовувати складну ліву та коли використовувати складну праву?
Я усвідомлюю, що складка ліворуч створює лівосторонні дерева, а складчаста права створює дерева, що схиляються вправо, але коли я добираюсь до складки, я іноді потрапляю в занурення в думці, що викликає головний біль, намагаючись визначити, який тип складки підходить. Зазвичай я закінчую розгортання всієї проблеми та крокую через реалізацію функції …


9
Написання foldl за допомогою foldr
У реальному світі 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 …

3
Чи реалізація цієї функції слів можлива без кроку після обробки після складання?
Реальний світ Haskell, глава 4, сторінка 98 друку запитує, чи wordsможна реалізувати за допомогою складок, і це також моє питання: Це можливо? Якщо ні, то чому? Якщо так, то як? Я придумав наступне, що ґрунтується на ідеї, що кожне не пробіл має бути попередньо до останнього слова у списку виводу …

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