5.2ISWIMの削減
関数ISWIMはパラメーター値のみを受け取るため、最初に値セットを定義する必要があります。値セットV(またはUとW)は、式セットのサブセットです。
特に、アプリケーション式は決して値ではなく、抽象化(関数など)は、その本体の形式に関係なく、常に値です。
コア減少関係ISWIMであるβ Vと同様、β、そのパラメータは、配下でなければならないVの代わりにM:
パラメータをVのメンバーに制限し、ある程度、割り当ての順序を課します。例えば、((λx.1)(sub1
λy.y))をすることができない1に減少βとV(ためsub1
λy.y)はVのメンバーではありません 同様に、((λx.1)(sub1
1))は最初に((λx.1)0)に、次に1に減らす必要があります。
ISWIMにはηと同様の関係はありません。これは、プログラミング言語の実装では、通常、別のプログラミング言語の本体に適用されている関数が抽出されないことを反映しています。また、今後は、αを還元として扱うのではなく、式を比較する際に、一般的にα相当(= α)を使用します。
関数適用に加えて、ISWIM削減ルールはプリミティブ操作も考慮する必要があります。そして、同じ原理でのbとO n-抽象化(特定のセットを定義したとしても)、抽象プリミティブδに関連する縮小された操作。δ各関係O N一定の値にマッピングされたプラスN基本。具体的には、次のδを選択します。
βとδを組み合わせることにより、完全に縮小された関係vが得られます。
常に、→ vはvマージが閉じられ、→→ v再帰的-転送タイプのクロージャ、= v対称が閉じられます。
演習5.1
使用→ ** V **すること(証明λw(。 - (W)⌈5⌉)⌈1⌉)((λxを。X ⌈10⌉)λyzを(+ Z Y))の値に低減することができます。
回答:
(λw( - (W)⌈5⌉)⌈1⌉)((λxを。X ⌈10⌉)λyz。(+ Z Y))
→ ** ** V(λw( - 。(中⌈1⌉)⌈5⌉))(λyz。(+付き Y)⌈10⌉)
→ ** ** V(λw( - 。(中)⌈5⌉)⌈1⌉)(λz。(+から⌈10⌉))
→ ** **の( - ((λz。(+から⌈10⌉))⌈1⌉)⌈5⌉)
→ ** v **(-(+⌈1⌉⌈10⌉)⌈5⌉)
→ ** v **(-⌈11⌉⌈5⌉)
→ ** v ** ⌈6⌉