Вопросы с тегом «lazy-evaluation»

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

553
Читайте файл по одной строке в node.js?

Я пытаюсь прочитать большой файл по одной строке за раз. Я нашел вопрос о Quora, который касался этой темы, но мне не хватает некоторых связей, чтобы все это соединилось. var Lazy=require("lazy"); new Lazy(process.stdin) .lines .forEach( function(line) { console.log(line.toString()); } );...

327
Когда я должен использовать Lazy <T>?

Я нашел эту статью о Lazy: лень в C # 4.0 - ленивый Какова лучшая практика, чтобы иметь лучшую производительность, используя ленивые объекты? Может ли кто-нибудь указать мне на практическое использование в реальном приложении? Другими словами, когда я должен использовать...

262
Что означает восклицательный знак в декларации Haskell?

Я натолкнулся на следующее определение, пытаясь изучить Haskell, используя для этого реальный проект. Я не понимаю, что означает восклицательный знак перед каждым аргументом, и мои книги, похоже, не упоминали об этом. data MidiMessage = MidiMessage !Int...

248
Что делает ленивый вал?

Я заметил, что Scala предоставляют lazy vals. Но я не понимаю, что они делают. scala> val x = 15 x: Int = 15 scala> lazy val y = 13 y: Int = <lazy> scala> x res0: Int = 15 scala> y res1: Int = 13 В REPL показывает , что yэто lazy val, но как она отличается от нормального...

175
Извлечь столбец dplyr tbl как вектор

Есть ли более краткий способ получить один столбец таблицы dplyr в качестве вектора из таблицы с базой данных (т. Е. Фрейм / таблица данных не может быть поднабором напрямую)? require(dplyr) db <- src_sqlite(tempfile(), create = TRUE) iris2 <- copy_to(db, iris) iris2$Species # NULL Это было...

165
Какова (скрытая) стоимость ленивого Вэл Скала?

Одна удобная особенность Scala заключается в том lazy val, что оценка a valоткладывается до тех пор, пока это необходимо (при первом доступе). Конечно, a lazy valдолжен иметь некоторые издержки - где-то Scala должен отслеживать, было ли значение уже оценено, и оценка должна быть синхронизирована,...

149
Как работают лексические замыкания?

Пока я исследовал проблему с лексическими замыканиями в коде Javascript, я столкнулся с этой проблемой в Python: flist = [] for i in xrange(3): def func(x): return x * i flist.append(func) for f in flist: print f(2) Обратите внимание, что этот пример осторожно избегает lambda. На нем печатается «4...

149
Сжатие потоков с использованием JDK8 с использованием лямбды (java.util.stream.Streams.zip)

В JDK 8 с лямбдой b93 в b93 был класс java.util.stream.Streams.zip, который можно использовать для архивирования потоков (это показано в учебном пособии Dhananjay Nene, посвященном изучению Java8-лямбд. Часть 1 ). Эта функция: Создает ленивый и последовательный объединенный поток, элементы которого...

124
foldl против поведения foldr с бесконечными списками

В коде функции myAny в этом вопросе используется foldr. Он прекращает обработку бесконечного списка, когда предикат удовлетворен. Переписал с помощью foldl: myAny :: (a -> Bool) -> [a] -> Bool myAny p list = foldl step False list where step acc item = p item || acc (Обратите внимание, что...

119
Чем полезна ленивая оценка?

Я давно задавался вопросом, чем полезна ленивая оценка. Мне еще предстоит, чтобы кто-нибудь объяснил мне разумным образом; в основном все сводится к «поверь мне». Примечание: я не имею в виду мемоизацию....

95
Как преобразовать ленивую последовательность в неленивую в Clojure

Я пробовал в Clojure следующее, ожидая возврата класса неленивой последовательности: (.getClass (doall (take 3 (repeatedly rand)))) Однако это все равно возвращается clojure.lang.LazySeq. Я предполагаю, что doallэто оценивает всю последовательность, но возвращает исходную последовательность,...

93
Angular ленивая одноразовая привязка для выражений

Начиная с версии 1.3.0-beta.10, в AngularJS появилась новая функция: «ленивая одноразовая привязка» . Простые выражения могут иметь префикс ::, указывающий angular прекратить наблюдение после того, как выражение было впервые вычислено. Приведенный общий пример выглядит примерно так:...

90
Каковы точки строгости Haskell?

Все мы знаем (или должны знать), что Haskell по умолчанию ленив. Ничего не оценивается до тех пор, пока не будет оценено. Итак, когда нужно что-то оценивать? Есть моменты, в которых Haskell должен быть строгим. Я называю это «точками строгости», хотя этот конкретный термин не так широко...

90
Есть ли в Haskell хвостовая рекурсивная оптимизация?

Сегодня я обнаружил команду time в unix и подумал, что буду использовать ее, чтобы проверить разницу во времени выполнения между хвостовой рекурсивной и нормальной рекурсивной функцией в Haskell. Я написал следующие функции: --tail recursive fac :: (Integral a) => a -> a fac x = fac' x 1...

89
Что плохого в Lazy I / O?

Обычно я слышал, что производственный код не должен использовать ленивый ввод-вывод. У меня вопрос, почему? Можно ли когда-нибудь использовать ленивый ввод-вывод вне игры? И что делает альтернативы (например, счетчики) лучше?...

82
withFilter вместо filter

Всегда ли эффективнее использовать withFilter вместо filter при последующем применении таких функций, как карта, плоская карта и т. Д.? Почему поддерживаются только map, flatmap и foreach? (Ожидаемые функции типа forall / также существуют)...

16
Параллельные бесконечные потоки Java исчерпывают память

Я пытаюсь понять, почему следующая Java-программа дает OutOfMemoryError, а соответствующая .parallel()- нет. System.out.println(Stream .iterate(1, i -> i+1) .parallel() .flatMap(n -> Stream.iterate(n, i -> i+n)) .mapToInt(Integer::intValue) .limit(100_000_000) .sum() ); У меня есть два...

12
Какие правила существуют для функции a -> (), вычисляемой в Haskell?

Как и в заголовке: какие гарантии существуют для функции, возвращающей единицу функции Haskell, которая будет оценена? Можно было бы подумать, что в таком случае нет необходимости выполнять какую-либо оценку, компилятор может заменить все такие вызовы непосредственным ()значением, если нет явных...

9
Как сделать этот алгоритм более ленивым, не повторяя себя?

(Вдохновлен моим ответом на этот вопрос .) Рассмотрим этот код (он должен найти самый большой элемент, который меньше или равен заданному входу): data TreeMap v = Leaf | Node Integer v (TreeMap v) (TreeMap v) deriving (Show, Read, Eq, Ord) closestLess :: Integer -> TreeMap v -> Maybe...