У меня проблемы с пониманием того, как эти функции обновляют базовый ref, атом и т. Д.
В документах сказано: (применить f аргументы current-value-of-identity)
(def one (atom 0))
(swap! one inc) ;; => 1
Так что мне интересно, как он «расширился» до формы заявки.Не указано, что именно означает «args» в форме заявки.Это последовательность аргументов или это отдельные значения?
Было ли оно "расширено" до:
(apply inc 0) ; obviously this wouldnt work, so that leaves only one possibility
(apply inc 0 '())
(swap! one + 1 2 3) ;; #=> 7
Было ли это:
(apply + 1 1 2 3 '()) ;or
(apply + 1 [1 2 3])
(def two (atom []))
(swap! two conj 10 20) ;; #=> [10 20]
Было ли это:
(apply conj [] [10 20]) ;or
(apply conj [] 10 20 '())