1.
Это также немного неясно для меня, но похоже, что это дизайнерское решение Рича. Если вы заметили:
user=> (defn x [y] (+ y 2))
#'user/x
user=> ((var x) 3)
5
Если переменная находится в местоположении функции / макроса, она в конечном итоге преобразуется в функцию или макрос.
2.
Одна важная вещь для понимания здесь - это модель агента. Агенты могут рассматриваться как работники, работающие с одной изменяемой ячейкой. Для этого агента есть очередь работы (очередь функций). отправить и отправить добавить работу в эту очередь. Поскольку отправка только добавляет работу в очередь, она немедленно возвращается. Поскольку агент выполняет только функции последовательно, первый вызов анимации должен завершиться перед выполнением следующего. Таким образом, вы достигаете в основном одного и того же, независимо от того, отправляете ли вы отправку первым или последним.
3.
Между ними не должно быть заметной разницы.