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