Сокращение для (quote ...)
, '
превращает код в данные.
stuff
- это символ, то есть это может быть имя переменной или имя функции и т. Д.
'stuff
дает вам сам символ "вещи".
(dostuff "on" those 4 :parameters)
при оценке запускает функцию dostuff
с четырьмя параметрами: строка, содержимое переменной те, число и ключевое слово.
'(dostuff "on" those 4 :parameters)
при оценке вернет приведенный выше код, который при оценке, в свою очередь, запустит функцию dostuff
с этими четырьмя параметрами.
Например:
Запустите '''somecode
, он вернет ''somecode
. Запустите ''somecode
, вернется 'somecode
. Запустите 'somecode
, он вернет somecode
. Запустите somecode
, и ... хорошо ... somecode
будет работать.
Можно сказать, что '
немного отличается от (eval..)
.
(eval (eval (eval '''(print "hello"))))
выведет «Hello».
(eval (eval (eval ''''(print "hello")))
- заметьте еще '
, затем eval
- ничего не напечатает, но вернет сам код (print "hello")
!!
За исключением того, что lispers, как правило, называют этот возвращаемый код (а иногда даже рукописный код) "списком" вместо "кода", по причинам, которые будут кровоточить, очевидно, когда вы копаете чуть глубже. Удачи :)