LISP-変数

LISPでは、各変数は symbol。変数の名前はシンボルの名前であり、シンボルのストレージセルに格納されます。

グローバル変数

グローバル変数はLISPシステム全体で永続的な値を持ち、新しい値が指定されるまで有効です。

グローバル変数は通常、を使用して宣言されます defvar 構築します。

例えば

(defvar x 234)
(write x)

[実行]ボタンをクリックするか、Ctrl + Eを入力すると、LISPはすぐにそれを実行し、返される結果は次のようになります。

234

LISPには変数の型宣言がないため、シンボルの値を直接指定します。 setq 構築します。

例えば

->(setq x 10)

上記の式は、値10を変数xに割り当てます。シンボル自体を式として使用して変数を参照できます。

ザ・ symbol-value 関数を使用すると、シンボルの保存場所に保存されている値を抽出できます。

例えば

main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。

(setq x 10)
(setq y 20)
(format t "x = ~2d y = ~2d ~%" x y)

(setq x 100)
(setq y 200)
(format t "x = ~2d y = ~2d" x y)

[実行]ボタンをクリックするか、Ctrl + Eを入力すると、LISPはすぐにそれを実行し、返される結果はです。

x = 10 y = 20 
x = 100 y = 200

ローカル変数

ローカル変数は、特定のプロシージャ内で定義されます。関数定義内で引数として指定されたパラメーターもローカル変数です。ローカル変数には、それぞれの関数内でのみアクセスできます。

グローバル変数と同様に、ローカル変数も setq 構築します。

他に2つの構成があります- let そして prog ローカル変数を作成するため。

let構文の構文は次のとおりです。

(let ((var1  val1) (var2  val2).. (varn  valn))<s-expressions>)

ここで、var1、var2、.. varnは変数名であり、val1、val2、.. valnはそれぞれの変数に割り当てられた初期値です。

いつ letが実行され、各変数にそれぞれの値が割り当てられ、最後にs式が評価されます。評価された最後の式の値が返されます。

変数の初期値を含めない場合、変数はに割り当てられます nil.

main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。

(let ((x 'a) (y 'b)(z 'c))
(format t "x = ~a y = ~a z = ~a" x y z))

[実行]ボタンをクリックするか、Ctrl + Eを入力すると、LISPはすぐにそれを実行し、返される結果はです。

x = A y = B z = C

ザ・ prog コンストラクトには、最初の引数としてローカル変数のリストもあり、その後に本体が続きます。 prog, および任意の数のS式。

ザ・ prog functionは、s式のリストを順番に実行し、という名前の関数呼び出しに遭遇しない限り、nilを返します。 return. 次に、の議論 return 関数が評価されて返されます。

main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。

(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10)))
(format t "x = ~a y = ~a z = ~a" x y z))

[実行]ボタンをクリックするか、Ctrl + Eを入力すると、LISPはすぐにそれを実行し、返される結果はです。

x = (A B C) y = (1 2 3) z = (P Q 10)