欢迎!有关此工作方式的更多信息,请参阅关于页面。
从用户的角度来看,< 和 > 不是一个函数,因为它们不能在 go 块内部作为函数使用;例如 (go (apply < ...)) 不是一个有效的形式。这是一个问题,因为它 1) 使用户感到困惑,2) 导致其他宏出现错误,例如 CLJ-2291。
(go (apply < ...))
建议的解决方案:使 < 和 > 成为宏。
向后兼容性:此更改不应该引入任何破坏性更改,因为 < 不可以用作函数。这将引入 <!! 和 <! 之间的不匹配,一个是一个函数,另一个不是,但这种不匹配与这两个的语义差异是一致的。
有可能还将某些类型错误(如 ">! 不在 (go ...) 块中使用")移至编译时,干净地解决之前报告的一些问题,例如:(链接:https://dev.clojure.org/jira/browse/ASYNC-168?focusedCommentId=42881&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-42881 文本:ASYNC-168)