以下代码片段失败,因为 <!
不在 {{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}} 宏重新编写,因为在开始体时,所有绑定函数都可以正确初始化。