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

Ленивое вычисление относится к множеству концепций, которые стремятся избежать вычисления выражения, если его значение не требуется, и поделиться результатами вычисления выражения между всеми его использованиями, так что ни одно выражение не нужно оценивать более одного раза.
1 ответ

LazyMap на самом деле не ленивый?

Вот пример из книги по лестнице: object Example1 { def lazyMap[T, U](coll: Iterable[T], f: T => U) = { new Iterable[U] { def iterator = coll.iterator.map(f) } } val v = lazyMap[Int, Int](Vector(1, 2, 3, 4), x => { println("Run!") x * 2 }) } Ре…
17 окт '15 в 14:10
2 ответа

Лениво создавая перечислимые с перерывами между

У меня есть коллекция предметов IEnumerable<object> obs, У меня есть другая коллекция предметов IEnumerable<object> data, Для каждого ob в obs Мне нужно найти первый пункт в data имеет то же значение в определенном свойстве, что и ob, На…
15 ноя '17 в 10:05
2 ответа

Как переменные ленивого класса val реализованы в Scala 2.10?

Этот ответ на вопрос ( Какова (скрытая) стоимость ленивого Вэл Скала? показывает, как они были реализованы в Scala 2.7. Но, как говорится в комментариях, это должно было измениться с тех пор, так что мне интересно, какова текущая (2.10) реализация …
14 июл '13 в 18:20
2 ответа

Как воспользоваться Lazy Evaluation с этим кодом?

Я пишу программу на Haskell, в которой я хочу записать в уже существующий файл. Программа должна генерировать каждую строку перед добавлением ее в файл. Поэтому вместо того, чтобы сначала выполнять все вычисления, а затем добавлять их в файл, я бы х…
22 дек '11 в 15:43
1 ответ

Схема - Мемоизация с "силой" и "задержкой" сравнения скорости

(define fibo ; fibonacci (lambda (n) (cond ((= n 0) 0) ((= n 1) 1) ((= n 2) 1) (else (+ (fibo (- n 1)) (fibo(- n 2)) ))))) (time (fibo 20)) (define (fiboN n) ; fibonacci (delay (cond ((= n 0) 0) ((= n 1) 1) ((= n 2) 1) (else (+ (force (fiboN (- n 1)…
25 окт '15 в 04:40
3 ответа

Найти следующий штрих с учетом всех предыдущих

Я пишу рекурсивный генератор бесконечных простых чисел, и я почти уверен, что смогу оптимизировать его лучше. Прямо сейчас, кроме таблицы поиска первых дюжин простых чисел, каждый вызов рекурсивной функции получает список всех предыдущих простых чис…
2 ответа

Строгая оценка целочисленного аккумулятора

Вот классическая первая попытка на заказ length функция: length1 [] = 0 length1 (x:xs) = 1 + length1 xs А вот хвосто-рекурсивная версия: length2 = length2' 0 where length2' n [] = n length2' n (x:xs) = length2' (n+1) xs Тем не мение, (n+1) не будет …
08 июл '13 в 12:21
2 ответа

Реализуйте ленивое перетаскивание

Я пытаюсь реализовать ленивую операцию перетаскивания. Я хочу показать мой список пользователям с файлами, когда пользователь перетаскивает файл и помещает его в папку, содержимое должно быть загружено и доставлено. Я использую интерфейс IDataObject…
14 сен '10 в 12:56
1 ответ

Регулярное выражение ленивый перед захватом группы

Используя следующее регулярное выражение <w:p.*?\$\{test\}.*?\/w:p> Я пытаюсь соответствовать первому <w:p> перед "${test}" и первым </w:p> после. После работал просто отлично, используя? квантификатор, но он отказывается останавли…
05 июн '14 в 14:34
3 ответа

Каковы побочные эффекты в предикатах и ​​почему они плохие?

Мне интересно, что считается побочным эффектом в предикатах для fnкак remove или же filter, Там, кажется, есть ряд возможностей. Понятно, что если предикат пишет в файл, это побочный эффект. Но рассмотрим ситуацию, подобную этой: (def *big-var-that-…
21 июл '15 в 09:24
2 ответа

Запоминает ли Clojure оценку своих аргументов?

В Clojure, если я запомнил функцию, назовите ее f и вызвать это на спор a, Если a является большим ленивым значением, запоминает ли возвращаемое значение на основе соответствия thunk, в отличие от форсирования оценки a и соответствие по результату? …
01 фев '12 в 00:27
4 ответа

Стратегия оценки

Как следует рассуждать об оценке функции в примерах вроде следующего в Haskell: let f x = ... x = ... in map (g (f x)) xs В GHC иногда (f x) оценивается только один раз, а иногда один раз для каждого элемента в xsв зависимости от того, что именно f …
24 фев '12 в 23:23
1 ответ

Можно ли отключить анализатор строгости на GHC?

Это показывает ghci внизу ленится, ghci > let x = trace "1" 1 in x + x 1 1 2 Запуск кода ниже после компиляции показывает по умолчанию ghc усиливается анализатором строгости. main = do print $ let x = trace "1" 1 in x + x 1 2 Но почему результат …
01 дек '16 в 20:29
3 ответа

Что случилось с ленивой оценкой Clojure

Я скручиваю свою старую голову java/python способом clojure. Пожалуйста, помогите мне понять ленивую особенность clojure. => (def myvar (lazy-seq [1 2 (prn "abc")])) #'user/myvar Вышесказанное легко понять. Поскольку это ленивая последовательност…
28 июн '12 в 23:57
1 ответ

Потоки на Хаскеле (Comonadic): бесконечны?

Я видел потоки, используемые в качестве примера по умолчанию для comonad, но я не могу понять, насколько они бесконечны, но нет. Предположим, у нас есть конструктор данных ( отсюда) data Stream a = a :> Stream a Как мы наконец добиваем поток? Мы …
06 июн '17 в 13:08
1 ответ

org.hibernate.exception.DataException: не удалось инициализировать коллекцию

Когда я пытаюсь получить доступ к своей коллекции (List) следующим образом, я получаю следующую ошибку, хотя я делаю это в рамках той же UserTransaction. ::: EntityAccessorException: org.hibernate.exception.DataException: could not initialize a coll…
23 фев '11 в 17:52
2 ответа

Определить рекурсивные ссылки - отложенный вызов вызывает переполнение стека

Для сценария потока данных мне нужны значения, которые рекурсивно ссылаются друг на друга. Следующее не работает: class Foo(val that: Foo) class Bar { lazy val a: Foo = new Foo(b) lazy val b: Foo = new Foo(a) println(s"a = $a, b = $b") } new Bar // …
21 окт '14 в 13:45
1 ответ

Scala - итератор для всех строк в файлах в каталоге

Мне очень нравится for (line <- Source fromFile inputPath getLines) {doSomething line} конструкция для перебора файлов в scala, и мне интересно, есть ли способ использовать подобную конструкцию для перебора строк во всех файлах в каталоге. Важным…
10 апр '12 в 22:08
3 ответа

Рекурсивный ввод-вывод в Хаскеле

В Haskell я могу легко определить рекурсивную функцию, которая принимает значение и возвращает строку: Prelude> let countdown i = if (i > 0) then (show i) ++ countdown (i-1) else "" Prelude> countdown 5 "54321" Я хочу использовать такой же …
24 май '11 в 16:24
2 ответа

MEF Lazy ImportMany с Creationpolicy.NonShared

Я новичок в mef и поэтому у меня есть вопрос:) у меня есть следующее: [PartCreationPolicy(CreationPolicy.Shared)] [Export(typeof(SharedExport))] public class SharedExport : INPCBase { [ImportMany(typeof(INonShared),RequiredCreationPolicy = CreationP…
08 июл '10 в 12:39