对于一个简单的lazy-seq,只取一个参数(比如2的幂的列表),如果我用5和8来命名它呢?只是缓存了这两个值吗?
创建和缓存一个无限列表来获得一个无限结构,如果缓存我已经调用懒惰函数的每一个输入都会破坏内存,那么创建和缓存一个无限列表又有什么意义呢?
因为它说它会在以后的每个调用中缓存结果...带's'的。
可以在运行时以某种方式跟踪此行为吗?
这里有一个玩具示例,它显示了运行时发生的事情:
(defn times-two[number]
(print "- ")
(* 2 number))
(def powers-of-two (lazy-cat [1 2] (map times-two (rest powers-of-two))))
(println (take 10 powers-of-two))
(println (take 12 powers-of-two))
输出应该是:
(1-2-4-8-16-32-64-128-256 512)
有人知道怎么做吗?如有任何帮助,不胜感激 问候,
我试图从继承的一些迭代Java库代码中创建一个Clojure seq。基本上,Java代码所做的是使用解析器从文件中读取记录,将这些记录发送到处理器,并返回结果的ArrayList。在Java中,这是通过调用parser.readdata(),然后调用parser.getRecord()获取一条记录,然后将该记录传递给processor.processRecord()来完成的。对parser.re
描述 (Description) 方法tuple()将项列表转换为元组 语法 (Syntax) 以下是tuple()方法的语法 - tuple( seq ) 参数 (Parameters) seq - 这是一个要转换为元组的序列。 返回值 (Return Value) 此方法返回元组。 例子 (Example) 以下示例显示了tuple()方法的用法。 #!/usr/bin/python aLi
描述 (Description) 方法extend()将seq的内容追加到list。 语法 (Syntax) 以下是extend()方法的语法 - list.extend(seq) 参数 (Parameters) seq - 这是元素列表 返回值 (Return Value) 此方法不返回任何值,但将内容添加到现有列表。 例子 (Example) 以下示例显示了extend()方法的用法。 #!
描述 (Description) 方法list()接受序列类型并将它们转换为列表。 这用于将给定元组转换为列表。 Note - 元组与列表非常相似,唯一的区别是元组的元素值不能更改,元组元素放在括号之间而不是方括号。 语法 (Syntax) 以下是list()方法的语法 - list( seq ) 参数 (Parameters) seq - 这是一个要转换为列表的元组。 返回值 (Return