Вопросы по теме '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 просмотров
schedule
04.04.2022
Значение foldr против foldl (или foldl ')
Во-первых, Real World Haskell , который я читаю, советует никогда не использовать foldl , а вместо этого использовать foldl' . Так что я этому верю.
Но я не знаю, когда использовать foldr против foldl' . Хотя я могу видеть структуру того,...
35832 просмотров
schedule
23.07.2022
Почему этот код Haskell успешно работает с бесконечными списками?
У меня есть код Haskell, который действительно правильно работает с бесконечным списком, но я не понимаю, почему он может это делать успешно. (Я изменил свой исходный код, который не обрабатывал бесконечные списки, чтобы включить что-то из...
2559 просмотров
schedule
31.03.2022
Как узнать, когда использовать складывание влево, а когда - вправо?
Я знаю, что fold-left производит деревья с наклоном влево, а fold-right создает деревья с наклоном вправо, но когда я тянусь к сгибу, я иногда зацикливаюсь на вызывающих головную боль мыслях, пытаясь определить, какой тип сгиба подходит. Обычно я...
23573 просмотров
schedule
07.05.2022
Как сложить контейнер 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 просмотров
schedule
27.12.2022
Почему в 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 просмотров
schedule
08.05.2023
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 просмотров
schedule
22.04.2022
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