<function>
<fname property="Normal Order / LEVEL: 0">
Lambda
</fname>
<prototype>
LISP形式

(1) ([Lambda Order="Normal"]
		(Arguments symbol ....) exp)
(2) ([Lambda Order="Applicative"]
		env-exp (Arguments symbol ....) exp)
(3) ([Lambda Order="Normal"] symbol exp)
(4) ([Lambda Order="Applicative"] env-exp symbol exp)

XML形式

(1)
<Lambda Order="Normal">
	<Arguments>
		^symbol
		^symbol
		....
	</Arguments>
	exp
</Lambda>
(2)
<Lambda Order="Applicative">
	env-exp
	<Arguments>
		^symbol
		^symbol
		....
	</Arguments>
	exp
</Lambda>
(3)
<Lambda Order="Normal">
	^symbol
	exp
</Lambda>
(4)
<Lambda Order="Applicative">
	env-exp
	^symbol
	exp
</Lambda>
</prototype>
<prototype>
C関数宣言

XLtype *
cLambda(char * order,XLtype * (*)());
(プリミティブ関数の定義用)
</prototype>
<explanation>
評価順序(Order)には、引数の評価方法としてNormal か Applicative のいずれかを指定する。Normal の場合は引数はすべて評価されずに、そのまま関数に渡される。環境は新たに生成され、そこに引数、属性情報などが記憶される。 Applicative の場合は、引数はすべて評価され関数に渡される。関数はexpを評価し、その戻り値を関数の戻り値とする。引数の評価の時に使用する環境は、 env-expで指定される。env-exp = () とすると評価時のカレント環境で引数を評価する。 

Lambdaの戻り値は関数である。この戻り値をEvalによって評価すると、まず、与えられた環境で、この関数の属性に従って引数を評価する。次に、与えられた環境を親に持つ環境を生成し、その環境に、シンボルリストで定義されたシンボルと先の値の対応を記憶し、この環境をもって、expを評価する。評価結果を、この関数の戻り値とする。 

(1)の場合、引数の指定された順番と、Argumentのシンボルの順番を照らし合わせ、対応するシンボルに引数を対応させる。一方、(2)は関数呼び出し時の構造型全体をシンボルsymbolに対応させる。
</explanation>
</function>

