LET против LET * в Common Lisp

Вам не нужна LET, но вы обычно common-lisp хотите ее.

ДАВАЙТЕ предполагает, что common-lisp вы просто выполняете стандартное lisp параллельное связывание без lisp каких-либо сложностей. LET lisp * вводит ограничения для common-lisp компилятора и подсказывает lisp пользователю, что существует lisp причина, по которой необходимы common-lisp последовательные привязки. Что common-lisp касается стиля, LET лучше, если lisp вам не нужны дополнительные lisp ограничения, налагаемые LET common-lisp *.

Использование LET может common-lisp быть более эффективным, чем common-lisp LET * (в зависимости от компилятора, оптимизатора lisp и т. д.):

  • параллельные привязки можно выполнять параллельно (но я не знаю, действительно ли это делают какие-либо системы LISP, а формы инициализации должны выполняться последовательно)
  • параллельные привязки создают единую новую среду (область действия) для всех привязок. Последовательные привязки создают новую вложенную среду для каждой отдельной привязки. Параллельные привязки используют меньше памяти и обеспечивают более быстрый поиск переменных.

(Вышеупомянутые common-lisp пункты относятся к Scheme, другому common-lisp диалекту LISP. clisp может lisp отличаться.)

lisp

common-lisp

2022-10-21T01:13:05+00:00