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

Объясните, пожалуйста, на самом простом языке без жаргона универсальное свойство fold?
Я работаю через «Real World Haskell», что привело к созданию бесплатного PDF-файла с именем "Учебник по универсальности и выразительности фолда" . Это подчеркивает, что «складка» является «универсальной». Я борюсь с его определением слова...
1802 просмотров
schedule 12.07.2023

Как сделать дополнение в списке с условием?
У меня есть университетский курс по функциональному программированию, где я использую SML. В качестве подготовки к экзамену я работаю над некоторыми из старых наборов экзаменов без решений. Один из немногих вопросов, с которым у меня действительно...
10574 просмотров

Предложения по оптимизации простого Scala foldLeft по нескольким значениям?
Я повторно реализую некоторый код (простой байесовский алгоритм вывода, но это не очень важно) с Java на Scala. Я хотел бы реализовать его максимально производительным способом, сохраняя при этом код чистым и функциональным, максимально избегая...
1637 просмотров

Перекрестная проверка в Weka
Из того, что я читал, я всегда думал, что перекрестная проверка выполняется следующим образом: При k-кратной перекрестной проверке исходная выборка случайным образом разбивается на k подвыборок. Из k подвыборок одна подвыборка сохраняется в...
60289 просмотров
schedule 17.12.2022

Haskell Fold с анонимной функцией
У меня проблема с одной из основ Haskell: Fold + анонимные функции Я разрабатываю программу bin2dec с помощью foldl . Решение выглядит следующим образом: bin2dec :: String -> Int bin2dec = foldl (\x y -> if y=='1' then x*2 + 1 else x*2)...
5138 просмотров
schedule 01.01.2023

Scala: является ли оператор foldl инфиксным?
Глядя на код с foldl сложно понять его синтаксис, например: def lstToMap(lst:List[(String,Int)], map: Map[String, Int] ):Map[String, Int] = { (map /: lst) (addToMap) } Является ли /: инфиксным оператором? Что означает (map /:...
472 просмотров
schedule 13.03.2024

Проблемы со сгибом в Rust
Предположим, fn scan(int, int) -> int . Когда используешь fn count(x: int, y: int) -> int { scan(x - 1, y - 1) + scan(x - 1, y) + scan(x - 1, y + 1) + scan(x, y - 1) + scan(x, y + 1) + scan(x + 1, y - 1) + scan(x + 1, y) +...
1953 просмотров
schedule 05.07.2022

Почему вы можете перевернуть список с помощью foldl, но не с помощью foldr в Haskell
Почему вы можете перевернуть список с помощью foldl? reverse' :: [a] -> [a] reverse' xs = foldl (\acc x-> x : acc) [] xs Но этот дает мне ошибку компиляции. reverse' :: [a] -> [a] reverse' xs = foldr (\acc x-> x : acc) [] xs...
11790 просмотров
schedule 30.06.2023

Преобразование двоичного дерева в список с использованием функции fold в Ocaml
Дано: type 'a tree = Empty | Node of 'a * 'a tree * 'a tree Использовать: let rec tree_fold f e t = match t with | Empty -> e | Node (x, l, r) -> f x (tree_fold f e l) (tree_fold f e r);; для преобразования двоичного...
1823 просмотров

Объяснение списков:функция сгиба
Я все больше и больше узнаю о языке Erlang и недавно столкнулся с проблемой. Я читал о функции foldl(Fun, Acc0, List) -> Acc1 . Я использовал учебник Learnyousomeerlang.com, и там был пример (пример касается калькулятора обратной польской записи...
1375 просмотров

Haskell, Foldr и foldl
Я уже довольно давно пытаюсь обернуть голову в сторону foldr и foldl, и я решил, что следующий вопрос должен решить эту проблему за меня. Предположим, вы передаете следующий список [1,2,3] следующим четырем функциям: a = foldl (\xs y -> 10*xs...
740 просмотров
schedule 16.12.2022

Как добавить в пакетный язык Notepad ++ или любым другим способом?
Во-первых, я часами искал свой задний конец, пытаясь найти ответ, но, похоже, я не могу найти ничего отдаленно полезного. Что я пытаюсь сделать, так это найти способ добавить свертывание кода во встроенный пакетный язык. По сути, я люблю...
2021 просмотров
schedule 04.03.2022

поведение foldl в бесконечных списках
Что я понял о foldl и foldr в списках: Если мы вправо сбрасываем [0,1,2,3] с функцией s и начальным аккумулятором a , мы делаем это: f 0 (f 1 (f 2 (f 3 a))) Если мы оставили фолд [0,1,2,3] с функцией s и начальным...
147 просмотров
schedule 18.04.2023

Как работает определение scanr с точки зрения папки?
Упражнение 1 на странице 102 Викибука по Haskell предлагает: «Напишите собственное определение scanr, сначала используя рекурсию, а затем используя foldr». Я написал рекурсивный: myscan f acc [] = [acc] myscan f acc (x:xs) = val : rest where...
1045 просмотров
schedule 31.10.2022

Почему foldr работает с бесконечным списком?
Эта функция может работать с бесконечными списками ассоциаций, и легко понять, почему: findKey :: (Eq k) => k -> [(k,v)] -> Maybe v findKey key [] = Nothing findKey key ((k,v):xs) = if key == k then Just v...
254 просмотров
schedule 26.06.2023

функция рисования со сгибом и добавлением строки?
У меня есть вопрос о рекурсивной функции для рисования изображения Да, это домашнее задание, но я не знаю, как нарисовать это изображение. Что у меня есть до сих пор: Функция, которая дает мне список точек (x/y) из кривой ( (list (x1/y2)...
67 просмотров
schedule 14.04.2024

Сворачивание списка и подсчет всех вхождений произвольного количества уникальных и неизвестных сущностей
Я использую библиотеку Control.Foldl для обхода произвольно длинного списка и подсчета всех вхождений произвольного количества уникальных сущностей. Т.е. список может иметь вид [Just "a", Just "b", Just "aab", Nothing, Just "aab"] и я мой...
749 просмотров
schedule 12.12.2023

Складной список опций
Учитывая список [Some 1; Some 2; Some 3] , я хотел бы получить результат Some 6 . Учитывая список [Some 1; None] должен дать None . Но я нахожу это немного сложнее, чем я себе представлял, чтобы добиться этого чистым способом. Лучшее, что...
777 просмотров
schedule 05.10.2023

Создание списка целых чисел в OCaml без рекурсии
Как я могу использовать одну из функций fold для создания списка целых чисел от 0 до значения n-1? Я не понимаю, как заставить fold_right возвращать список, а не возвращать только накопленное значение. Это для вспомогательной функции, которую я...
1770 просмотров
schedule 22.05.2024

Не удается сопоставить кортеж внутри foldl
У меня есть следующий код, который должен преобразовать тип столбца excel в соответствующий номер. Например, AA в 27 и AB в 28: import Data.Char (ord) import Data.List (foldl1') columnToNumber :: String -> Int columnToNumber s = foldl1' (\acc...
163 просмотров
schedule 26.07.2023