Welcome! Please see the About page for a little more info on how this works.

0 votes
in core.async by

From a user perspective, <! and >! are not functions, since they can't be used as functions inside a go block; e.g. (go (apply <! ...)) is not a valid form. This is a problem, since it 1) causes confusion among users, and 2) causes bugs in other macros, e.g. CLJ-2291.

Proposed solution: make <! and >! macros.

Backwards compatibility: the change shoudn't introduce any breaking changes, since <! cannot be used as a function anyway. The change will introduce a mismatch between <!! and <!, one being a function and the other not, but that mismatch is in line with the differences in the semantics between the two.

Potentially, it would also move ">! used not in (go ...) block"-type errors to compile-time, cleanly solving some issues reported earlier, e.g.: (link: https://dev.clojure.org/jira/browse/ASYNC-168?focusedCommentId=42881&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-42881 text: ASYNC-168)

1 Answer

0 votes
Welcome to Clojure Q&A, where you can ask questions and receive answers from members of the Clojure community.