Еще один новичок (общий) LISP вопрос:
В основном в большинстве языков программирования существует среднее значение для функций для получения ссылок на переменные вместо простых значений, т.е. передачи по ссылке вместо передачи по значению. Скажем, для простоты я хочу написать функцию LISP, которая получает переменную и увеличивает значение переменной на единицу:
(defun increase-by-one (var)
(setf var (+ var 1)))
Теперь очевидно, что проблема заключается в том, что эта функция только увеличивает значение копии переменной в стеке, а не фактическую исходную переменную. Я также пытался добиться эффекта, используя макросы без особого успеха, хотя у меня такое чувство, что использование макросов - правильный путь.
Я все время нахожу эту стену в LISP, и я уверен, что вокруг нее должен быть какой-то способ или, возможно, совсем другой подход к этой проблеме в LISP, о котором я не думал? Как это делается в LISP?
EDIT. Несколько человек предложили использовать incf
. Я только использовал этот пример, чтобы продемонстрировать проблему простым способом, я действительно не искал повторного выполнения incf. Но спасибо за предложения в любом случае.