Описание тега lazy-sequences

Ленивые последовательности - это последовательности, которые создаются по мере доступа к их членам.
3 ответа

В поисках критики моей программы Erlang

Я новичок в Erlang и довольно плохо знаком с функциональным программированием в целом. До сих пор я действительно хорошо проводил время с Эрлангом (хотя пунктуация Эрланга несколько раз приводила меня в замешательство;)), но мне бы очень понравилось…
1 ответ

Clojure изменить LazySeq

Я унаследовал некоторый код Java, который делает следующее: 1) он получает от Clojure объект LazySeq (который состоит из нескольких объектов PersistentHashMap) 2) затем он передает тот же самый объект LazySeq (без изменений) обратно в скрипт Clojure…
17 янв '14 в 18:49
4 ответа

Блоки итераторов в Clojure?

Я использую clojure.contrib.sql получить некоторые записи из базы данных SQLite. (defn read-all-foo [] (with-connection *db* (with-query-results res ["select * from foo"] (into [] res)))) Теперь я не хочу реализовывать всю последовательность перед в…
02 май '10 в 12:50
3 ответа

Соедините несколько ленивых последовательностей строк в Clojure

У меня есть несколько строк: (def a "some random string") (def b "this is a text") Теперь я хочу объединить их части, чтобы создать строку "некоторый текст". К сожалению, обе строки ниже не сработали. (clojure.string/join " " [(take 4 a) (take-last …
22 авг '12 в 09:39
1 ответ

Clojure: извлечение карт с конкретными значениями из Lazy Sequence

У меня есть Clojure Lazy Sequence: { {:keyOne 123, :keyTwo "TestVal"} {:keyOne 456, :keyTwo "Value2"} {:keyOne 789, :keyTwo "TestVal"} } Я хочу получить карты, которые имеют определенное значение для данного ключа, например, я хочу, чтобы все карты …
30 окт '17 в 10:40
1 ответ

Как создать ленивую последовательность по частям в clojure?

У меня есть сервер базы данных, и я получаю данные с него. Иногда данные имеют миллионы строк и более, поэтому я использую лень для загрузки. Я использую серверные курсоры из библиотеки clojure.jdbc https://funcool.github.io/clojure.jdbc/latest/ для…
01 ноя '17 в 06:46
2 ответа

Остановить и разделить сгенерированную последовательность на повторы - clojure

Я пытаюсь создать последовательность, которая будет генерировать только значения, пока не найдет следующие условия и не вернет перечисленные результаты: кейс = 0 - вернуть {:origin [все сгенерировано, кроме 0]: pattern 0} 1 - вернуть {:origin nil:pa…
26 окт '12 в 04:23
2 ответа

clojure: как построить строку из двух последовательностей?

Я часами борюсь с проблемой... Я хочу построить ссылку со значениями из двух последовательностей. (doseq [item photoset-name] (prn item )) (doseq [item-name photoset-id] (prn item-name )) выход: "AlbumTitel2" "test" "AlbumTitel" "album123" "speciale…
07 авг '13 в 20:44
1 ответ

Ruby'ленивый' менее производительный, чем выделение огромных списков?

Я пытаюсь обработать большой список чисел: require 'benchmark' N = 999999 Benchmark.bm 10 do |bm| bm.report 'Eager:' do (0..N).select(&:even?).map{|x| x * x}.reduce(&:+) end bm.report 'Lazy:' do (0..N).lazy.select(&:even?).map{|x| x * x}…
05 дек '17 в 11:59
2 ответа

Найти элементы LazySeq, которые были реализованы

У меня есть LazySeq соединений, которые создаются при реализации. Если при попытке создать соединение возникает исключение, я бы хотел перебрать все соединения, которые уже были реализованы в LazySeq, и закрыть их. Что-то вроде: (try (dorun connecti…
03 дек '13 в 05:15
2 ответа

Ленивая версия mapM

Предположим, я получаю большой список элементов при работе с IO: as <- getLargeList Сейчас я пытаюсь подать заявку fn :: a -> IO b на as: as <- getLargeList bs <- mapM fn as mapM имеет тип mapM :: Monad m => (a -> m b) -> [a] -&…
26 сен '12 в 19:42
2 ответа

Clojure: идиоматический способ вызова содержит? на ленивой последовательности

Есть ли идиоматический способ определения, содержит ли LazySeq элемент? По состоянию на Clojure 1.5 вызов contains? создает исключение IllegalArgumentException: IllegalArgumentException contains? not supported on type: clojure.lang.LazySeq clojure.l…
28 апр '13 в 16:07
2 ответа

(println (iterate inc 0)): почему это даже начинает печатать?

Когда я бегу (println (iterate inc 0)) в моем ответе я получу что-то вроде этого: user=> (println (iterate inc 0)) (0 1 2 3 4 5 6 7 8 9 10 11 12 13 .................... Когда я запускаю код, я ожидаю, что repl ничего не показывает и просто застря…
17 май '15 в 09:10
1 ответ

Гарантирует ли стандарт C++11, что временный объект, переданный функции, будет уничтожен после завершения функции?

Как известно, этот стандарт C++11 гарантирует, что временный объект, переданный функции, будет создан до вызова функции: гарантирует ли стандарт C++11, что временный объект, переданный функции, будет создан до вызова функции? Но гарантирует ли станд…
6 ответов

Каковы некоторые убедительные случаи использования бесконечных структур данных?

Некоторые языки (Haskell, Clojure, Scheme и т. Д.) Имеют ленивую оценку. Одна из "точек продажи" ленивых вычислений - бесконечные структуры данных. Что в этом такого хорошего? Каковы некоторые примеры случаев, когда возможность иметь дело с бесконеч…
1 ответ

Ошибка извлечения Clojure / seeseaw.core/table lazy-seq

Мой метод (list-projects) запрашивает карту из базы данных SQLITE. (doall (apply prn (pm.models.db/list-projects))) pm.core==>{:id 1, :name "MyTestProj", :owner "mbc", :date "2017-12-19 13:12:45"} {:id 2, :name "newproject1", :owner "mbc", :date …
19 дек '17 в 16:17
1 ответ

Clojure: Использование потока без удерживания головы. Это правильно?

Я хочу поместить ленивую последовательность где-нибудь, чтобы предоставить данные по мере необходимости. Я знаю, что должен избегать удержания главы последовательности. Я придумал следующее решение, я что-то упустил? (defn headless [s] (let [a (atom…
11 сен '13 в 18:38
2 ответа

Почему сокращение этой ленивой последовательности замедляет эту программу 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 >= n) (ta…
06 апр '16 в 00:54
1 ответ

Эффективное сито Эйлера в стиле потоковой обработки

Сито эйлера имеет лучшую асимптотическую сложность, чем сито Эратосфена, и может быть реализовано просто на императивных языках. Мне интересно, есть ли способ элегантно реализовать его с помощью потоков. Я проверил вики на haskell о простых числах, …
16 дек '12 в 16:07
1 ответ

Выполнение ленивой последовательности функций

Мне интересно, как заставить ленивую последовательность функций быть оцененной. Например, если у меня есть функция, которая возвращает целое число 1: test.core=> (fn [] 1) #<core$eval2480$fn__2481 test.core$eval2480$fn__2481@4163c61> test.c…
20 фев '14 в 18:00