Вопросы по теме '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 просмотров
schedule
23.07.2023
Как сложить 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 просмотров
schedule
31.08.2022
Ищем алгоритм FP для составления объектов из строк, разделенных точками.
Я пытаюсь решить конкретную проблему с помощью функционального программирования. Я предполагаю, что фолд должен сделать эту работу, но до сих пор решение ускользало от меня.
Начиная со строки, разделенной точками, например "a.b.c" , я хочу...
97 просмотров
schedule
17.04.2023
Доступ к аккумулятору и элементу в `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 просмотров
schedule
13.02.2023