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