(rontolisp) docs
← 特殊形式

defvar

(defvar name [value])

グローバル変数 name を定義し、name がまだ束縛されていない場合に限り value に束縛します。すでに値を持っている場合、defvar はそれを変更しません(冪等です)。value を省略した場合、変数は宣言されますが未束縛のままになります。value は実際に束縛が確立されるときにのみ評価され、名前シンボルが返されます。

defvarnameスペシャル としても宣言します。以降の let/let* によるその名前の束縛は、レキシカルではなくダイナミック束縛(そのエクステント内で呼ばれた関数からも見え、脱出時に復元される)になります。letprogv を参照してください。