2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面以获取更多相关信息。

+1 投票
core.async

以下片段失败,因为{{< ! >}}不在{{go}}边界内。

`
(let [port (a/chan)]
(a/go

(letfn [(my-even? [n] (if (zero? n) true (my-odd? (dec n))))
        (my-odd? [n] (if (zero? n) false (my-even? (dec n))))]
  (my-even? (a/<! port)))))

`

在{{letfn}}体中的异步代码应该由{{go}}宏重写,因为所有绑定函数在体开始时都可以被正确初始化。

5 答案

0 投票

由:bronsa发表的评论

移除不好的补丁

0 投票

由:alexmiller发表的评论

这个状态如何?0001-ASYNC-221-handle-letfn-in-ioc+test.patch是补丁吗?

0 投票

由:leonoel发表的评论

不是,修复和测试都是错误的。
修复没有正确建立循环引用,测试未能检查它,因为它遮蔽了clojure.core的odd?/even?。

0 投票

由:leonoel发表的评论

更新示例以正确检查循环引用

0 投票
参考:https://clojure.atlassian.net/browse/ASYNC-221(由 leonoel 报告)
...