возврат некоторого значения из любого выражения является одной из определяющих особенностей языков семейства lisp (функциональных или нет).
Я предполагаю, что autolisp также не может возвращать 'void'.
и действительно, статья в Википедии об autolisp говорит следующее здесь :
Обратите внимание на последнюю строку в определении функции: при оценке без аргументов функция prin c возвращает нулевой символ, который не отображается интерфейсом командной строки AutoCAD.
Итак, ваш вопрос касается, главным образом, спецификации функции print
+ поведение repl, а не семантики языка.
с точки зрения clojure, все ответы, которые я знаю , распечатать любое возвращенное значение, включая нулевые символы и пустые строки. И это выглядит последовательным.
Строго говоря, есть один способ сделать выражение невозвратимым в зазоре: сделать его бесконечно рекурсивным .. но хорошо ..
неуместное добавление
просто для иллюстрации логики c и симметрии: в общем lisp вы можете написать функцию, возвращающую «ничто»:
CL-USER> (defun f ()
(values))
CL-USER> (f)
; No values
, но опять же, если вы действительно «используете» результат f
, это nil
:
CL-USER> (list (f))
;;=> (NIL)
эта форма возврата существует для разработчиков, которые хотят подчеркнуть, что возвращаемое значение функции не имеет значения.