我正在做一個tutorial emacs lisp,它是在談論let
函數。爲什麼在emacs lisp中`let`後面有兩個括號?
;; You can bind a value to a local variable with `let':
(let ((local-name "you"))
(switch-to-buffer-other-window "*test*")
(erase-buffer)
(hello local-name)
(other-window 1))
我不明白在第一行let
後面的雙括號的作用。他們在做什麼,一套不會做?沒有它們運行該部分,我得到一個錯誤:Wrong type argument: listp, "you"
。
謝謝!爲什麼我們不需要單引號(...)來表示這個varlist,而在其他情況下我們確實需要'(...)來創建一個列表? – Hatshepsut
@Hatshepsut:'let'是一種特殊的形式,它有自己的評估規則。引用表單僅適用於包含表單的評估規則將以其他方式嘗試對其進行評估的情況。特殊形式通常設計有明智的評估規則,可以最大限度地減少額外的語法 – Svante