Примечание : Этот ответ устарел, потому что ОП отредактировал вопрос, включив в него "почему", которое я просил. Я оставляю это для контекста, но ответ Алана Томпсона намного лучше для текущей версии вопроса.
Это зависит от того, что вы мутируете и почему. В некоторых стилях Scheme мутация является обычным явлением, и поэтому вы можете спросить «как мне изменить объект в Clojure», потому что ваш алгоритм Scheme включает в себя мутацию. Лучше задать вопрос: «Каков правильный алгоритм для решения этой проблемы в Clojure». Задавать очень широкие вопросы об очень узких фрагментах кода не будет продуктивно.
Например, ваш фрагмент кода на самом деле вообще бесполезен, потому что даже в Scheme он аналогичен:
(define (f x)
(lambda (newvalue) '()))
То есть мутация x
несущественна в вашей функции, потому что невозможно прочитать x
! Таким образом, сказать вам, что это Clojure, не очень интересно: просто
(defn f [x]
(fn [newvalue] nil))
но, конечно, это не отвечает на ваш настоящий вопрос. Итак, дело в том, чтобы поддержать: что является вашим настоящим вопросом? Почему Вы мутируете с этим? Затем респонденты могут предложить тип мутации, которая подходит для вашего сценария, или (возможно) альтернативный подход, который в конце концов не требует мутации.