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

Как в Clojure реализованы ленивые последовательности?
Мне нравится Clojure. В языке меня беспокоит то, что я не знаю, как реализуются ленивые последовательности и как они работают. Я знаю, что ленивые последовательности оценивают только те элементы, которые запрашиваются. Как оно работает? Что...
3795 просмотров

SML Ленивая сортировка списка int с использованием потоков
Вопрос 1 Потоки и ленивая оценка (40 баллов) Мы знаем, что сортировка сравнением требует как минимум O(n log n) сравнений, где were сортирует n элементов. Допустим, нам нужны только первые f(n) элементов из отсортированного списка для...
1589 просмотров

clojure остальные и связанные с ними
Я следил за The Joy of Clojure и меня озадачили эти 2 утверждения (def very-lazy (-> (iterate #(do (print \.) (inc %)) 1) rest rest rest)) (def less-lazy (-> (iterate #(do (print \.) (inc %)) 1) next next next)) соответственно выход...
421 просмотров
schedule 18.10.2022

В чем разница между функцией Clojure (nth [coll index]) и композицией (last (take index coll))
Я пытаюсь работать с книгой Стюарта Хэллоуэя Programming Clojure. Весь этот функциональный материал очень нов для меня. я понимаю как (defn fibo[] (map first (iterate (fn [[a b]] [b (+ a b)]) [0 1]))) лениво генерирует...
632 просмотров

как сделать Seq.takeWhile + один элемент в F#
Я хотел бы написать функцию, которая фильтрует последовательность с помощью предиката, но результат также должен ВКЛЮЧАТЬ первый элемент, для которого предикат возвращает false. Логика была бы примерно такой, если бы в F# было ключевое слово break...
2598 просмотров

ленивая версия mapM
Предположим, я получаю большой список элементов при работе с IO: as <- getLargeList Теперь я пытаюсь применить fn :: a -> IO b к as : as <- getLargeList bs <- mapM fn as mapM имеет тип mapM :: Monad m => (a ->...
460 просмотров
schedule 31.01.2023

Терминология на примере кодовых данных в Clojure
Представьте себе следующую функцию, которая выдает бесконечную ленивую последовательность чисел Фибоначчи в Clojure: (def fib-seq (concat [0 1] ((fn rfib [a b] (lazy-cons (+ a b) (rfib b (+ a b)))) 0 1))) user> (take 20...
827 просмотров
schedule 25.07.2023

почему эта функция цикла такая медленная по сравнению с картой?
Я просмотрел исходный код карт, который в основном продолжает создавать ленивые последовательности. Я бы подумал, что перебор коллекции и добавление к переходному вектору будет быстрее, но, очевидно, это не так. Что я не понимаю в поведении...
174 просмотров
schedule 23.02.2023

Mapcat преодолевает лень
У меня есть функция, которая создает ленивые последовательности, называемые a-функцией. Если я запускаю код: (map a-function a-sequence-of-values) он возвращает ленивую последовательность, как и ожидалось. Но когда я запускаю код:...
1503 просмотров
schedule 08.01.2023

ArgumentError — пытался вызвать ленивый take_while без блока
Представьте, что есть M больших текстовых файлов по N строк в каждом, пронумерованных от 1 до M*N. Моя цель - получить либо все строки после индекса X, либо только последние 10 из них, если X не указан. Я мог бы сделать внешний if , чтобы разделить...
156 просмотров
schedule 11.05.2023

Бесконечная скорость генератора в рубине - метод против перечислителя против ленивого
Предупреждение . Это не имеет практического значения. Я просто хочу знать, что происходит. Я наткнулся на эту строку несколько раз в Интернете: return to_enum __method__ unless block_given? Я хотел проверить это и сделал с ним метод...
369 просмотров

Clojure lazy-seq оптимизация производительности
Я новичок в Clojure, и у меня есть код, который я пытаюсь оптимизировать. Я хочу вычислить количество совпадений. Основная функция - это compute-space , а вывод - это вложенная карта типа {"w1" {"w11" 10, "w12" 31, ...} "w2" {"w21" 14, "w22"...
616 просмотров
schedule 30.07.2022

Почему эта ленивая последовательность не печатается?
Я не могу понять, почему эта ленивая последовательность не печатается. Я просмотрел другие сообщения здесь (например, это ), и ни одно из них не похоже на то, что я ищу. Вот фрагмент кода... (defn exp [x n] (reduce * (repeat n x)) ) (defn...
166 просмотров
schedule 15.06.2022

Как lazy-seq накапливает результат?
Вот реализация функции partition в clojurescript. Другие методы удалены для простоты. Мне трудно понять, как lazy-seq накапливает результат. В конце есть when , который, если я правильно понимаю, вернет nil , если тест неверен. Куда...
135 просмотров
schedule 08.06.2023

Как мысленно смоделировать этот генератор Фибоначчи clojure?
Наткнулся на эту интересную реализацию генератора Фибоначчи в clojure. Немного сложно понять часть ссылки на себя. Любая помощь в ментальном моделировании была бы очень полезна. (def fib-seq (lazy-cat [0 1] (map + (rest fib-seq) fib-seq)))
352 просмотров
schedule 19.06.2022

Обработка SQL-запросов как ленивых потоков в Racket
Язык: Racket (с кодом/указателем SQL-запроса) Библиотеки: db, racket/stream, racket/sequence Цель: лениво обрабатывать значение sql-запросов, используя потоки в Racket. Вопрос 1: как вы манипулируете объектами потока запросов SQL в Racket? (Я...
59 просмотров
schedule 13.06.2022

Как сгенерировать ленивое деление?
Я хочу создать последовательность 1, 1/2, 1/3, 1/4 ... * Используя подход функционального программирования в raku, в моей голове это должно выглядеть так: (1,{1/$_} ...*)[0..5 ] но на выходе получается: 1,1,1,1,1 Идея проста, но кажется...
300 просмотров
schedule 06.05.2022

Clojure, java.io.Writer f и ленивый seq
Не могу использовать lazy-seq для записи данных в файл, независимо от того, что я использую, ошибка закрытия потока возникает каждый раз. (ns logger.core (:gen-class) (:require [clojure.java.io :as io]) (:import java.util.Date...
79 просмотров
schedule 05.03.2023