有没有一种方法可以在Clojure中描述任意的惰性自递归数据结构?举例来说,我想做这样的事情:
(def inf-seq (fn rec [] (lazy-seq (cons 42 (rec)))))
(take 3 (inf-seq))
但是有一张地图:
(def inf-map (fn rec [] (??? {:a (rec) :b 42})))
(get-in (inf-map) [:a :a :a :b])
序列懒惰不适用于Clojure中的延迟函数求值,显然,您需要构造无限嵌套的图。
尝试使用延迟:
user=> (def inf-map (fn rec [] {:a (delay (rec)) :b 42}))
#'user/inf-map
user=> (inf-map)
{:a #<Delay@4e9f9a19: :pending>, :b 42}
user=> @(:a (inf-map))
{:a #<Delay@5afd479c: :pending>, :b 42}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句