Вопросы по теме 'fold'

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

Сколько аргументов принимает функция foldr в Haskell?
Я новичок в Haskell и читаю книгу "Real World Haskell" . В главе 4 книги автор просит в качестве упражнения переписать функцию groupBy, используя fold. Один из читателей книги (Октавиан Войку) дал следующее решение: theCoolGroupBy :: (a -> a...
2429 просмотров
schedule 01.10.2022

Слишком много аргументов в обобщенной версии функции fold для BST
Запуск fold (+) 0 sample выдает ошибку о том, что (+) применяется к слишком большому количеству аргументов. Почему? data(Ord a, Show a, Read a) => BST a = Void | Node { val :: a, left, right :: BST a } deriving (Eq, Ord, Read,...
574 просмотров
schedule 13.11.2022

Последовательность в складывающихся тройках F#
Я гуглил и читал, и я пытаюсь найти «правильный» способ сделать это, но каждый вопрос, который я читал на SO, кажется, имеет совершенно разные ответы. Вот суть моей проблемы. файлы имеют сигнатуру типа seq из тройки (a:string, b:string,c:Int64)....
1409 просмотров
schedule 07.10.2022

Как свернуть/развернуть HTML-теги с помощью Vim
Есть ли какой-нибудь плагин для сворачивания тегов HTML в Vim? Или есть другой способ настроить ярлык для свертывания или развертывания html-тегов? Я хотел бы сворачивать/разворачивать теги html так же, как я делаю с отступом.
25221 просмотров
schedule 13.08.2022

Синтаксис Scala Vector fold (/: и :\ и /:\)
Может ли кто-нибудь привести несколько примеров того, как /: :\ и /:\ Реально привыкнуть? Я предполагаю, что это ярлыки для методов уменьшения/свертывания, но в документах Scala нет примеров того, как они на самом деле используются, и...
3175 просмотров
schedule 21.01.2023

Как можно использовать функцию Map схемы для передачи двух списков в одну функцию?
У меня вопрос по Схеме. Я новичок в этом языке, и мой вопрос довольно общий: Можно ли без определения рекурсивной функции использовать Map (или что-то подобное) для подачи двух списков параметров в функцию, создавая один новый список из выходных...
3410 просмотров
schedule 09.07.2023

Что это за шаблон свертывания и итерации?
Представьте, что вам нужно свернуть последовательность, и вы также хотите узнать промежуточные значения в нескольких точках диапазона. Это то, что я использовал для этого: [a,b,c] = map fst . tail $ chain [g i, g j, g k] (zero, sequence) g ::...
1001 просмотров
schedule 22.06.2022

Складки против рекурсии в Erlang
Согласно Узнайте немного Erlang : Практически любую функцию, которая сокращает списки до 1 элемента, можно представить как свертку. [...] Это означает, что fold универсален в том смысле, что вы можете реализовать практически любую другую...
3806 просмотров
schedule 29.12.2022

Чувствительные к стоимости складки
Позвольте мне объяснить, что я имею в виду под кратностью, зависящей от стоимости, на примере: вычисление числа пи с произвольной точностью. Мы можем использовать формулу Лейбница (не очень эффективную, но красивую и простую) и ленивые списки...
215 просмотров
schedule 27.02.2023

написание рекурсивной функции с помощью foldr
Я новичок в программировании на Haskell. Во время практики меня попросили сделать рекурсивную функцию, которая выглядит так: repeat1 5 [1,2,3] = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]] который repeat1 :: Int -> a -> [a] repeat1 0...
366 просмотров
schedule 06.01.2023

карта . композиция функций папки - Haskell
Итак, давайте сразу к делу. :t (map.foldr) (map.foldr) :: (a1 -> a -> a) -> [a] -> [[a1] -> a] Что такое [[a1] -> a]? Я действительно пытаюсь понять эту композицию, поэтому я делал это: -- map.foldr map.foldr :: (a1...
2553 просмотров
schedule 29.05.2023

Lazy foldПравильная путаница с ранним завершением
Изучая Функциональное программирование на Scala , я наткнулся на следующий фрагмент кода: def foldRight[A](z: => B)(f: (A,=>B) => B):B = uncons match { case Some((h,t)) => f(h,t.foldRight(z)(f)) case None => z } Затем...
696 просмотров

Как сложить n-арное дерево в C #
Я хотел бы сделать свертку над n-арными структурами данных Tree. (fold - это также Aggregate в Linq). Мне удалось найти рабочее решение: public static R Aggregate<T, R>(T node, Func<T, IEnumerable<T>> getChildren,...
1057 просмотров
schedule 31.03.2023

Существует ли оптимизированная комбинация `span` и `foldl'`, или эта комбинация будет оптимизирована GHC?
Предположим, я хочу сложить все элементы списка до первого отрицательного числа, но не включая его, и вернуть число и остальную часть списка. Простой способ сделать это addPos l = s `seq` (s,back) where (front, back) = span (>= 0) l s =...
189 просмотров
schedule 04.06.2022

Возвращает индекс запрошенного значения списка, используя fold в OCaml
Я написал рекурсивную версию индекса следующим образом let index list value = let rec counter num = function | [] -> -1 | h::t -> if h == value then num else (counter (num + 1)) t in counter 0 list;;...
1243 просмотров

Ищем алгоритм FP для составления объектов из строк, разделенных точками.
Я пытаюсь решить конкретную проблему с помощью функционального программирования. Я предполагаю, что фолд должен сделать эту работу, но до сих пор решение ускользало от меня. Начиная со строки, разделенной точками, например "a.b.c" , я хочу...
97 просмотров

Доступ к аккумулятору и элементу в `foldl`
В foldLeft в Scala я знаю, как получить доступ к значениям accumulator и element в Scala, но не в Haskell. Я мог бы использовать foldLeft , чтобы узнать, от 1 до 100, сколько чисел имеет остаток от 1 при делении на 3: scala>...
448 просмотров
schedule 10.09.2022

Застрял - Практический экзамен Q по кодированию на Haskell: вернуть самую длинную строку в списке строк
Полный вопрос практического экзамена: Используя анонимные функции и функции сопоставления, определите функции Haskell, которые возвращают самую длинную строку в списке строк, например. для ["qw", "asd", "fghj", "kl"] функция должна возвращать...
823 просмотров
schedule 22.02.2023

Как можно определить такие операции, как map, filter и reverse, в терминах редукции?
В этой записи блога "CSP и преобразователи в JavaScript" , автор заявляет: Во-первых, мы должны понимать, что многие операции с массивами (или другими коллекциями), такие как map , filter и reverse , могут быть определены в терминах...
430 просмотров