【发布时间】:2011-04-13 01:45:50
【问题描述】:
我已经开始学习 clojure,但我在思考某些概念时遇到了麻烦。例如,我在这里要做的是获取这个函数并对其进行转换,以便它懒惰地调用 get-origlabels。
(defn get-all-origlabels []
(set (flatten (map get-origlabels (range *song-count*)))))
我的第一次尝试使用了递归但炸毁了堆栈(song-count 大约是 10,000)。我不知道如何使用尾递归来做到这一点。
get-origlabels 每次调用都会返回一个集合,但值通常在调用之间重复。 get-origlabels 函数实际上做的是读取一个文件(从 0 到 song-count-1 的每个值对应一个不同的文件)并以集合的形式返回其中存储的单词。
任何指针将不胜感激!
谢谢! -菲利普
【问题讨论】:
标签: clojure set lazy-evaluation