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

Реализовать zip с помощью foldr
В настоящее время я работаю над главой 4 Real World Haskell и пытаюсь понять реализация foldl в терминах foldr . (Вот их код :) myFoldl :: (a -> b -> a) -> a -> [b] -> a myFoldl f z xs = foldr step id xs z where step x g a...
5051 просмотров

Значение foldr против foldl (или foldl ')
Во-первых, Real World Haskell , который я читаю, советует никогда не использовать foldl , а вместо этого использовать foldl' . Так что я этому верю. Но я не знаю, когда использовать foldr против foldl' . Хотя я могу видеть структуру того,...
35832 просмотров

Почему этот код Haskell успешно работает с бесконечными списками?
У меня есть код Haskell, который действительно правильно работает с бесконечным списком, но я не понимаю, почему он может это делать успешно. (Я изменил свой исходный код, который не обрабатывал бесконечные списки, чтобы включить что-то из...
2559 просмотров

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

Как сложить контейнер STL?
Мне нужен аналог функции Haskell foldl для сворачивания любых контейнеров STL. Ожидаемая подпись выглядит следующим образом: template Iterator, FoldingFunction, Result Result foldl( Iterator begin, Iterator end, FoldingFunction f,...
10329 просмотров
schedule 21.12.2022

Почему foldl1 не может применить оператор (==)?
Из прелюдии : foldl1 : он берет первые 2 элемента списка и применяет к ним функцию, затем передает функции этот результат и третий аргумент и так далее. Почему нельзя написать что-то подобное? foldl1 (==) [6, 6, 6] foldl1 (\x y ->...
433 просмотров

Почему в Option нет метода сворачивания?
Интересно, почему у scala.Option нет такого метода fold , как это определено: fold(ifSome: A => B , ifNone: => B) эквивалентно map(ifSome).getOrElse(ifNone) Нет ничего лучше, чем использовать map + getOrElse ?
9006 просмотров
schedule 27.03.2022

Разница между fold и foldLeft или foldRight?
ПРИМЕЧАНИЕ. Я использую Scala 2.8 — может ли это быть проблемой? Почему я не могу использовать функцию fold так же, как foldLeft или foldRight ? В Set scaladoc сказано, что: Результат свертки может быть только супертипом параметра...
26429 просмотров
schedule 30.05.2022

Складывание влево и вправо по бесконечному списку
У меня есть проблемы со следующим отрывком из Learn You A Haskell (отличная книга, я не буду отрицать ее): Одно большое отличие состоит в том, что правые складки работают с бесконечными списками, а левые - нет! Проще говоря, если вы в...
7778 просмотров

Scala - уменьшить/свернуть влево
У меня есть вложенная карта m , которая выглядит так: m = Map("email" -> "[email protected]", "background" -> Map("language" -> "english")) У меня есть массив arr = Array("background","language") Как мне свернуть/уменьшить массив и найти...
4829 просмотров
schedule 19.05.2022

Левая прокладка на контейнере, когда содержимое статьи выходит за пределы сгиба
У меня есть контейнер, внутри которого находятся заголовок, навигация, боковая панель и статья. Когда содержимое статьи выходит за пределы сгиба, слева от контейнера добавляются отступы или поля. Это ясно, когда вы переключаетесь между страницами,...
355 просмотров
schedule 13.01.2023

Свертывание, композиция функций, монады и лень, боже мой?
Я озадачен. Я могу написать это: import Control.Monad main = print $ head $ (foldr (.) id [f, g]) [3] where f = (1:) g = undefined и выход 1 . Это имеет смысл, потому что это сводится к: main = print $ head $ ((1:) ....
926 просмотров
schedule 01.06.2022

Как использовать fold left в списке x:Myclass => Boolean, чтобы получить соединение?
У меня есть несколько фильтров, выраженных в виде списка функций List(MyClass => Boolean) . Я пытаюсь получить логическое соединение (И) всех членов. У меня есть ощущение, что я мог бы использовать здесь сгиб. Но я не понимаю синтаксис, особенно в...
1922 просмотров
schedule 06.07.2022

Как свернуть размеченный союз
Я пытаюсь реализовать свертку над дискриминированным объединением. DU называется Expr и представляет собой программное выражение, часто рекурсивное. Я пытаюсь написать свертку, рекурсивно накапливающую результат операции над Exprs. Ниже моя попытка...
492 просмотров

Haskell: списки и складки
У меня есть ряд чисел: 0, 1, 3, 6, 10, 15,... По сути, вы добавляете 1, затем добавляете 2, затем добавляете 3 и т. д. Я должен сделать функцию, в которой я возвращаю эту серию чисел в списке до заданного числа, n. Я хочу использовать foldl....
322 просмотров
schedule 17.01.2023

Как функционально выразить фильтр, который опирается на соседние элементы в списке
Несколько раз я хотел пройтись по списку и выбрать элементы, у которых есть какое-то свойство, которое также зависит, скажем, от следующего элемента в списке. В качестве простого примера у меня есть код, который подсчитывает, сколько раз функция f...
604 просмотров
schedule 17.10.2022

СМЛ| сложить с если
У меня есть это упражнение, которое просит подсчитать, сколько значений в логическом списке верны. Я набрал это: fun countt xs = foldl (fn (x,y) => if x=true then y=y+1) 0 xs; что, видимо, неправильно. Я получаю следующую ошибку:...
399 просмотров
schedule 22.12.2022

Определение функции, подобной arg max, над конечными множествами и доказательство некоторых ее свойств, а также избежание обхода через списки
Я работаю с пользовательской реализацией векторов как функций, домен которых представляет собой конечный «набор индексов» натуральных чисел, а изображение имеет некоторый тип, на котором можно определить максимум, обычно real . Например. Я мог бы...
1621 просмотров
schedule 31.03.2022

boost-mpl, fold и placeholders, выберите класс из вектора
Я пытаюсь изучить метапрограммирование шаблонов С++. Учитывая boost::mpl::vector классов, я хочу вычислить индекс этого класса, где статическая переменная-член имеет определенное значение. Я нашел решение, которое, кажется, работает. Однако для...
677 просмотров
schedule 04.04.2022

Python, рекурсивно сократить список (комбинации/перестановки)
Я пытаюсь создать общую функцию, которая уменьшит список следующим образом: func(['a','b','c'],str.join) # --> ['a','b','c','ab','ac','bc','abc'] func(['a','b','c'],lambda: a,b:a+'x'+b) # --> ['a','b','c','axb','axc','bxc','axbxc'] Я...
1105 просмотров
schedule 10.01.2023