2
我正在玩懒惰列表,似乎无法弄清楚这一点。 我认为我可以通过将它作为一个大的递归函数来解决我的问题,这个函数可以完成所有必要的工作,但是我想编写一个简单的函数。如何扁平化和懒洋洋地连接列表清单
我会尝试写一个简单的例子,应该翻译成我的问题很容易:
(defn numbers
([] (numbers 1))
([n] (cons n (lazy-seq (numbers (inc n))))))
(defn repeat-n [n]
(take n (repeat n)))
所以,我们有两个功能。一个返回一个懒惰的数字序列。另一个返回它的数字参数n次(希望它也是懒惰的;如果不是这样,编写一个会很容易)。
我想将repeat-n映射到数字,以便返回懒惰的结果序列。我用lazy-seq
,lazy-cat
,concat
和递归函数玩了一下,但是我仍然遇到了问题。
函数应该是这样的
(lazy-concat-map [f items] ...)
和(希望)呼叫
的结果(take 11 (lazy-concat-map repeat-n numbers))
将
12233344445
任何想法?
注意'for'可以帮助摆脱'适用concat':'(对于[X(范围)N(重复XX)] n)的' 。 – kotarak