Вопросы по теме 'lazy-sequences'

Ленивое разделение
У меня есть источник элементов, и я хочу отдельно обрабатывать их прогоны, имеющие одинаковое значение ключевой функции. В Python это выглядело бы так for key_val, part in itertools.groupby(src, key_fn): process(key_val, part) Это решение...
712 просмотров
schedule 22.11.2021

Есть ли ленивая версия функции F # Seq.groupBy?
Я хотел бы лениво сгруппировать очень большую последовательность, используя следующий код: // native F# version let groups = Seq.initInfinite id |> Seq.groupBy (fun i -> i % 10) for (i, group) in groups |> Seq.take 5 do...
213 просмотров
schedule 01.11.2021

Может кто-нибудь объяснить это ленивое решение Фибоначчи?
Это код: fibs = 0 : 1 : zipWith (+) fibs (drop 1 fibs) При оценке fibs представляет собой бесконечный список чисел Фибоначчи. Я не понимаю, как составлен список. zipWith возвращает список, поэтому при сжатии fibs можно получить...
303 просмотров

Можно ли построить эхо-программу в Clojure с ленивыми бесконечными последовательностями?
В качестве примера возьмем следующую программу: (defn echo-ints [] (doseq [i (->> (BufferedReader. *in*) (line-seq) (map read-string) (take-while integer?))] (println i))) Идея...
57 просмотров
schedule 29.09.2021

Взаимодействие Java / Clojure не может реализовать ленивую последовательность в Java
Я передаю карту, созданную в Clojure, в Java, в конечном итоге предназначенную для JTable. Использование функции map создает ленивую последовательность, которая даже с doall, into {} не реализуется. Clojure: (defn test-lz-seq [] (let [myvec...
109 просмотров
schedule 11.09.2021

Каковы убедительные примеры использования бесконечных структур данных?
Некоторые языки (Haskell, Clojure, Scheme и т. д.) имеют отложенные вычисления. Одним из «достоинств» ленивых вычислений являются бесконечные структуры данных. Что в этом такого замечательного? Каковы примеры случаев, когда возможность работать с...
4470 просмотров

приложение: не процедура при генерации простых чисел
Я пытаюсь вывести первые 100 простых чисел и продолжаю получать ошибку: применение: не процедура; ожидается процедура, которую можно применить к заданным аргументам: (#) arguments...: [none] Ошибка показана в моей процедуре take$ здесь: (if...
487 просмотров

Переполнения стека и выражения рекурсивной последовательности F#
У меня есть выражение последовательности, подобное этому: let fibSeq = let rec fibSeq' a b = seq { yield a yield! fibSeq' b (a + b) } fibSeq' 1 1 Теперь даже для больших чисел это не приведет к переполнению...
810 просмотров

Реализация ленивой последовательности (строки) Clojure в REPL
Я пытаюсь реализовать ленивую последовательность (которая должна генерировать одну строку) в REPL, но безуспешно. Исходный код работает нормально: (def word_list ["alpha" "beta" "gamma" "beta" "alpha" "alpha" "beta" "beta" "beta"]) (def...
853 просмотров
schedule 28.04.2022

Генерация потока всех возможных кортежей из заданных потоков с использованием Scheme
Я пытаюсь написать процедуру stream-weighted-tuples , которая принимает процедуру взвешивания и любое количество потоков для создания потока кортежей. Например, (stream-weighted-tuples (lambda (t) (+ (car t) (cadr t) (caddr t)) integers...
38 просмотров
schedule 28.04.2022

Извлечение содержимого вектора Clojure в виде LazySeq
Я работаю с Java API Clojure, и у меня есть постоянный вектор, который был создан с помощью кода: IPersistentVector vec = PersistentVector.create(); и позже заполняется значениями. Мне нужно извлечь содержимое этого вектора как LazySeq ....
304 просмотров
schedule 12.05.2022

Как определить разделы (факторизации относительно конкатенации) последовательности как ленивой последовательности ленивых последовательностей в Clojure
Я новичок в Clojure и хочу определить функцию pt , принимающую в качестве аргументов число n и последовательность s и возвращающую все разделы s в n частях, т. е. ее факторизации по отношению к n -конкатенации. например (pt 3 [0 1 2])...
201 просмотров

Ленивая оценка / поток / код FRP для node.js fs.readdir Асинхронный рекурсивный поиск по каталогам
Я пытаюсь реализовать структуру списка, читающую дерево каталогов FileSystem, используя node.js DIR / файловая структура: DIR1 DIR2R file1 file2 file3 … -> структура списка: ("DIR1" ("DIR2" "file1" "file2"...
1369 просмотров

Операторы вложенной карты в Clojure не оцениваются должным образом, похоже, это связано с LazySeq
Я написал функцию на Clojure, которая должна принимать логическое выражение и возвращать эквивалентное выражение, в котором все операторы not действуют непосредственно на переменные, например так: (not (and p q r)) становится (or (not...
132 просмотров

Как создать ленивую последовательность порциями в clojure?
У меня есть сервер базы данных, и я получаю данные с него. Иногда данные имеют миллионы строк и более, поэтому я использую лень для загрузки. Я использую серверные курсоры из библиотеки clojure.jdbc...
194 просмотров
schedule 28.06.2022

Почему сокращение этой ленивой последовательности замедляет работу программы Clojure в 20 раз?
У меня есть программа Clojure, которая возвращает сумму ленивой последовательности even чисел Фибоначчи ниже n : (defn sum-of-even-fibonaccis-below-1 [n] (defn fib [a b] (lazy-seq (cons a (fib b (+ b a))))) (reduce + (take-while (partial...
303 просмотров

Clojure Lazy Sequences: эквиваленты в Kotlin
Clojure предоставляет средства для ленивого вычисления значений в (бесконечных) последовательностях. При этом значения будут вычисляться только тогда, когда они будут фактически использованы. Пример бесконечной последовательности одного...
506 просмотров

Внезапное замедление с ленивой последовательностью
У меня был этот код: :history (cons [t (:latest thing)] (take n (:history thing)) ) который был предназначен для добавления прокручивающегося окна недавней истории на карту при каждой итерации моей программы. Я обнаружил, что после...
75 просмотров
schedule 17.02.2023

Понимание выполнения ленивой реализации Фибоначчи в Clojure
Я пытаюсь понять выполнение следующего кода: (def fibs (concat (lazy-seq [0 1]) (lazy-seq (map + fibs (rest fibs))))) Вот как я ожидал, что казнь будет выглядеть [0 1 : (map + [0 1] [1]) => 1 [0 1 1 : (map + [0 1 1] [1 1]) => 1...
166 просмотров
schedule 12.03.2023

двойной поток для предотвращения ненужной мемоизации?
Я новичок в Haskell и пытаюсь реализовать решето Эйлера в стиле потоковой обработки. Когда я заглянул на страницу Haskell Wiki о простых числах , я нашел какую-то загадочную технику оптимизации потоков. В 3.8 Линейном слиянии этой вики:...
423 просмотров