Например, #'functionname
, это необходимо?Что означает # mean в LISP
ответ
# 'имя_функции в Common Lisp
Common Lisp и некоторых других Лисп диалекты имеют более одного пространства имен. Здесь те, для функций и значений, различны. Для того, чтобы получить значение функцию от имени, нам нужно написать:
(function functionname)
Так что это немного долго писать, есть короче обозначения:
#'functionname
Чтобы показать эффект см это:
(let ((foo 42))
(flet ((foo() 'bar))
(list foo (function foo) #'foo (foo))))
Над определяет локальная переменнаяFOO
и местная функцияFOO
. Оператор списка возвращает значение из FOO
, то значения функции из foo
с помощью (function ...)
обозначения, то же самое, используя сокращенную нотацию руки, и затем значение фактически вызова функции FOO
.
(function foo)
и #'foo
- та же концепция, но написана по-разному. Оба относятся к локальной лексической функции с именем FOO
. FOO
вводится FLET
форма как местная функция.
Лисп РЕПЛ возвращает что-то вроде этого:
(42 #<function FOO 4060008224> #<function FOO 4060008224> BAR)
Выше показано, что первый пункт действительно значения переменной FOO
и следующие два элемента является функция значения, функция оценки до FOO
. Последний элемент - это символ BAR
, который возвращается из функции вызова (FOO)
.
Это разделение пространств имен для нормальных значений и значений функций присутствует в Common Lisp, Emacs Lisp и ISLisp. Другие диалекты Лиспа, подобные Схеме, не имеют такого разделения. В схеме имя может обозначать только одно значение.
# знак.
Символ #
используется для введения специального синтаксиса в s-выражениях. Вот несколько примеров:
#'functionname -> (function functionname)
#(1 2 3) -> the vector of the elements 1 2 3
#c(1 2) -> a complex number
#xFFFF -> a hex number
#b1111 -> a binary number
и многие другие. #
- так называемый диспетчерский символ макроса.
ANSI Common Lisp HyperSpec описывает символ #
в Section 2.4.8 Sharpsign.
Common Lisp мог бы использовать другой синтаксис для векторов. Скажите [1 2 3]
. Он также мог бы использовать другой синтаксис для сложных чисел. Что-то вроде {1 2}
. Но это не так. Зачем? Причина в том, что Common Lisp пытается быть экономичным с использованием символов на языке и оставляет персонажам, как [
, ]
, {
и }
пользователю для его собственных расширений синтаксиса. Часто пользователи Lisp разрабатывают внедренные языки и делают это немного проще, стандарт Common Lisp пытается свести использование символов до минимума, а также обеспечивает механизм макросимволов и символов макроса отправки.
Чтобы сохранить использование символов, используется один символ отправки #
, а следующий символ определяет, что можно обозначить. #b
для двоичных чисел. #x
для шестнадцатеричных чисел. #c
для комплексных чисел. #(
для векторов. #'
для имен функций. Плюс еще много.
Поскольку Common Lisp является программируемым языком программирования, этот синтаксис уровня персонажа может быть изменен пользователем. См. Функцию SET-DISPATCH-MACRO-CHARACTER.
- 1. Что означает/**/или/**/Mean?
- 2. Что означает POST/mean?
- 3. Что означает?: Mean
- 4. Что означает: = mean в vb.net?
- 5. Что означает/**/mean в css?
- 6. Что означает :: mean в C++?
- 7. Что означает^mean в AngularJS
- 8. Что означает $/mean в Ruby?
- 9. Что означает/*! */Mean в C#?
- 10. Что означает _ :: mean в Scala?
- 11. Что означает | = mean в C++?
- 12. PHP: Что означает & $ this mean?
- 13. Подпрограмма определения, что означает $ mean
- 14. Что означает `return function *() {...}` mean?
- 15. Что означает ## */mean внутри $ {file ## * /}?
- 16. Что означает perl configure mean
- 17. Что означает `((void (*)()) 0x1000)();` mean?
- 18. Что означает% = mean на Java?
- 19. Что означает «myimage.% 2d.png» mean
- 20. Что означает: mean in angularJS
- 21. Что означает cv-qual Mean?
- 22. Что означает: :: mean на C++?
- 23. Что означает этот код Lisp?
- 24. Что означает оператор | = mean в C#?
- 25. Что означает <: <mean в Scala?
- 26. Что означает «WHERE x =?» mean в SQL
- 27. Что означает ** D mean в string.format (** D)?
- 28. Что означает = fl mean в представлении haml
- 29. Что означает/static/mean в этом коде?
- 30. Что такое | 5E | означает в Common Lisp?
Вы предоставили отличную статью! Я нашел это, когда мне это нужно! – TheGeeko61