- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的回答中Clojure For Comprehension example我有一个处理自己输出的函数:
(defn stream [seed]
(defn helper [slow]
(concat (map #(str (first slow) %) seed) (lazy-seq (helper (rest slow)))))
(declare delayed)
(let [slow (cons "" (lazy-seq delayed))]
(def delayed (helper slow))
delayed))
(take 25 (stream ["a" "b" "c"]))
("a" "b" "c" "aa" "ab" "ac" "ba" "bb" "bc" "ca" "cb" "cc" "aaa" "aab" "aac"
"aba" "abb" "abc" "aca" "acb" "acc" "baa" "bab" "bac" "bba")
它的工作原理是创建一个前向引用(延迟
),该引用用作惰性序列(慢速
)中的第二个条目。该序列被传递给惰性函数,然后使用该函数的输出(惰性序列的第一部分,不需要计算延迟)来设置延迟
的值。
就这样我“喜结良缘”了。但这在 Haskell 中做得更加优雅(例如 Explanation of “tying the knot” )。鉴于 Clojure 有 delay
和 force
,我想知道是否有更好的方法来完成上述操作?
那么问题是:在上面的代码中能否以某种方式避免(延迟
)的(丑陋的、显式的)突变?显然(?)你仍然需要突变,但它可以被“惰性”结构隐藏吗?
[昨晚当我仍在试图了解如何做到这一点时,我有一个类似标题的问题;在上面的代码起作用之前没有人回复,所以我删除了它,但我对这种方法不太满意,所以我再试一次。]
另请参阅:Must Clojure circular data structures involve constructs like ref? (人们重复问题有点令人沮丧)。
最佳答案
我不确定我可以回答一般情况的问题,但这个函数似乎可以解决特殊情况。
(defn stream
[seed]
(let [step (fn [prev] (for [p prev s seed] (str p s)))]
(for [x (iterate step seed) y x] y)))
尽管我遇到了一个大型 (dorun (take ...))
的内存不足异常。所以这个功能可能有问题。
关于recursion - 在 Clojure 喜结连理 : circular references without (explicit, 丑陋)突变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567625/
kable(head(mtcars) %>% kable_styling(bootstrap_options = c("striped", "hover")) 使用 kable 表(见上文)的普通
我试图很好地显示 NSTextView 中突出显示的段落。现在,我通过创建一个带有背景颜色的 NSAttributedString 来做到这一点。这是一些简化的代码: NSDictionary *at
我的站点位于 http://www.idataresearch.net 我正在为导航菜单使用 Dynamic Drive 的 ddmoothmenu 脚本。我真的很喜欢这个脚本,很高兴看到以前的开发人
我在 Ubuntu EC2 实例上运行 nginx、gunicorn、django。整个网站运行良好。除了管理员。管理员无法正常显示。我运行“python manage.py Collectstati
在一个本身嵌套在一个或多个父数组/结构/union 中的数组/结构/union 中读取多个数字/字符串的最佳方法是什么? 没有临时变量的第一个例子: printf("%d %d\n", a[9][3]
我正在编写一个与 mingw 一起使用的包装层,它为应用程序提供了一个虚拟的 UTF-8 环境。处理文件名的函数是从 UTF-8 转换并调用相应的“_w”函数等的包装器。我遇到的最大问题是 Windo
在我的回答中Clojure For Comprehension example我有一个处理自己输出的函数: (defn stream [seed] (defn helper [slow]
我使用的是 bootstrap 4.0 alpha,没有其他样式。布局非常丑陋,日历只显示一列而不是表格。知道为什么以及如何做吗? 我从网站上注意到以下内容,但我不明白我应该怎么做: note: Th
我是一名优秀的程序员,十分优秀!