Вопросы по теме '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 просмотров
schedule
13.10.2021
Можно ли построить эхо-программу в 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 просмотров
schedule
24.03.2022
приложение: не процедура при генерации простых чисел
Я пытаюсь вывести первые 100 простых чисел и продолжаю получать ошибку:
применение: не процедура; ожидается процедура, которую можно применить к заданным аргументам: (#) arguments...: [none]
Ошибка показана в моей процедуре take$ здесь:
(if...
487 просмотров
schedule
23.03.2022
Переполнения стека и выражения рекурсивной последовательности F#
У меня есть выражение последовательности, подобное этому:
let fibSeq =
let rec fibSeq' a b =
seq { yield a
yield! fibSeq' b (a + b) }
fibSeq' 1 1
Теперь даже для больших чисел это не приведет к переполнению...
810 просмотров
schedule
18.04.2022
Реализация ленивой последовательности (строки) 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 просмотров
schedule
02.06.2022
Ленивая оценка / поток / код FRP для node.js fs.readdir Асинхронный рекурсивный поиск по каталогам
Я пытаюсь реализовать структуру списка, читающую дерево каталогов FileSystem, используя node.js
DIR / файловая структура:
DIR1
DIR2R
file1
file2
file3
…
-> структура списка:
("DIR1" ("DIR2" "file1" "file2"...
1369 просмотров
schedule
29.06.2022
Операторы вложенной карты в Clojure не оцениваются должным образом, похоже, это связано с LazySeq
Я написал функцию на Clojure, которая должна принимать логическое выражение и возвращать эквивалентное выражение, в котором все операторы not действуют непосредственно на переменные, например так:
(not (and p q r))
становится
(or (not...
132 просмотров
schedule
24.06.2022
Как создать ленивую последовательность порциями в 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 просмотров
schedule
26.07.2022
Clojure Lazy Sequences: эквиваленты в Kotlin
Clojure предоставляет средства для ленивого вычисления значений в (бесконечных) последовательностях. При этом значения будут вычисляться только тогда, когда они будут фактически использованы.
Пример бесконечной последовательности одного...
506 просмотров
schedule
24.08.2022
Внезапное замедление с ленивой последовательностью
У меня был этот код:
: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 просмотров
schedule
21.02.2023