lazy-sequences

    14热度

    3回答

    我的印象是懒惰的seqs总是被分块。 => (take 1 (map #(do (print \.) %) (range))) (................................0) 如所预期的32点被打印,因为由range返回的懒惰SEQ分块成32个元件块。然而,不是range当我尝试这跟我自己的函数get-rss-feeds,懒惰序列不再分块: => (take 1 (m

    0热度

    2回答

    我经常使用数组索引是从复杂的用户指定集合中生成的多维数组。 我正在寻找一个库,它具有用任意数量的索引表示复杂集合的类以及任意复杂的谓词。给定一个描述,所需的输出将是一个发生器。该发生器将依次产生对应于多维数组索引的dicts或tuples。 这样的图书馆是否存在? 例 假设我们有以下用户指定的组(在set-builder notation),其代表一些数组变量x[i][j]的索引: {i的1..1

    2热度

    1回答

    当在工作中对一些Clojure代码进行压力测试时,我发现在迭代大型数据集时,堆空间耗尽。我最终设法将这些问题追溯到Clojure的doseq函数的组合,以及对懒惰序列的实现。 这是最少的代码片段,通过耗尽可用堆空间崩溃的Clojure: (doseq [e (take 1000000000 (iterate inc 1))] (identity e)) 为doseq的文件明确指出它不保留偷懒序

    1热度

    1回答

    跟进我的问题here: 根据所提出的意见 - 编译器创建了一个假名类成员,重视它,就像你附加声明的方法。 我不完全理解这是什么意思,但我可以确认,如果说 Foo.Bar += (S, E) => { /*Code Goes Here*/ } ,而不是我,而不是说 Foo.Bar += FooBar; private void FooBar(object sender, EventArgs

    3热度

    2回答

    我实现了一个函数,该函数将给定输入集合的n元组作为惰性seq返回。 (defn gen-ngrams [n coll] (if (>= (count coll) n) (lazy-seq (cons (take n coll) (gen-ngrams n (rest coll)))))) 当我用更大的输入集合调用此函数时,我期望看到执行时间线性增加。然而,我观察时

    2热度

    3回答

    我有几个字符串: (def a "some random string") (def b "this is a text") 现在我想将它们串联的部分创建一个字符串“一些文本”。不幸的是,下面的两个字符串都不起作用。 (clojure.string/join " " [(take 4 a) (take-last 4 b)]) (str (take 4 a) " " (take-last 4

    2热度

    3回答

    我不明白为什么这个懒惰素数序列的定义会导致不终止。我得到的堆栈跟踪不是很有用(我对clojure的一个抱怨是钝的堆栈跟踪)。 (declare naturals is-prime? primes) (defn naturals ([] (naturals 1)) ([n] (lazy-seq (cons n (naturals (inc n)))))) (defn is

    5热度

    1回答

    运行此按预期工作: (defn long-seq [n] (lazy-seq (cons (list n {:somekey (* n 2)}) (long-seq (+ n 1))))) (take 3 (long-seq 3)) ; => ((3 {:somekey 6}) (4 {:somekey 8}) (5 {:somekey 10})) 但

    4热度

    4回答

    我试图了解clojure的懒惰序列是懒惰的,当工作发生时,以及我如何影响这些事情。 user=> (def lz-seq (map #(do (println "fn call!") (identity %)) (range 4))) #'user/lz-seq user=> (let [[a b] lz-seq]) fn call! fn call! fn call! fn call

    6热度

    1回答

    我写道: (fn r [f xs] (lazy-seq (if (empty? xs) '() (cons (f (first xs)) (r f (rest xs)))))) 解决4clojure.com的问题#118:http://www.4clojure.com/problem/118 它要求重新实现地图而不使用地图等和溶液流测试(我不知道它是否正