История изменений
Исправление theNamelessOne, (текущая версия) :
слово «рекурсивно» относится тут к вызовам и к операторам.
Внезапно, в лиспе нет разницы между функциями и операторами.
В LISP'е нет рекурсивного вычисления тривиальных операторов.
Не распарсил.
Т.е. функция в LISP'е НЕ производит вычисления над данными в момент своего вызова.
Ложь. В лиспе аппликативный порядок вычисления. Если бы это было не так, тогда такой код выполнялся бы без ошибок:
* (defun foo (a b) (if a a b))
FOO
* (foo t (/ 1 0))
debugger invoked on a DIVISION-BY-ZERO in thread
#<THREAD "initial thread" RUNNING {1002998D53}>:
arithmetic error DIVISION-BY-ZERO signalled
Operation was SB-KERNEL::DIVISION, operands (1 0).
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(SB-KERNEL::INTEGER-/-INTEGER 1 0)
0]
Исходная версия theNamelessOne, :
слово «рекурсивно» относится тут к вызовам и к операторам.
Внезапно, в лиспе нет разницы между функциями и операторами.
В LISP'е нет рекурсивного вычисления тривиальных операторов.
Не распарсил.
Т.е. функция в LISP'е НЕ производит вычисления над данными в момент своего вызова.
Ложь. В лиспе аппликативный порядок вычисления. Если бы это было не так, тогда такой код выполнялся бы без ошибок:
* (defun foo (a b) (if a a b))
FOO
* (foo t (/ 1 0))
debugger invoked on a DIVISION-BY-ZERO in thread
#<THREAD "initial thread" RUNNING {1002998D53}>:
arithmetic error DIVISION-BY-ZERO signalled
Operation was SB-KERNEL::DIVISION, operands (1 0).
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(SB-KERNEL::INTEGER-/-INTEGER 1 0)
0]