ANF常被叫做administrative normal form,好像是個模糊的「把administrative redex消掉」的說法。但最好想成以下的定義:對給定的A-reductions集合,化約會得到的normal form
Lambda calculus的A-normalization可以寫成以下定義
veEO::=ι∣x∣(λ (x) e)::=v∣(op e)∣(e e)∣(let (x e) e)∣(if0 e e e)::=⋅∣(let (x E) e)∣(if0 E e e)∣(E e)∣(v E)∣(op v E e)::=v∣op
A-reductions
E[(let (x e1) e2)]→AE[(if0 v e1 e2)]→AE[(O v)]→A(let (x e1) E[e2])where E=⋅(if0 v E[e1] E[e2])where E=⋅(let (x′ (O v)) E[x′])where E=⋅,E=E′[(let (x ⋅) e)],fresh x′A1A2A3
化約成的A-normal form(也就是說,不斷套用A-reductions應該讓程式變成以下形式,這些形式套用A-reductions不會再化簡)
(Values)(Computations)(Configuration)VNM::=ι∣x∣(λ (x) M)::=V∣(V V)∣(op V)::=N∣(let (x N) M)∣(if0 V M M)
我們通常會假設綁定中涉及的變數唯一且考慮 α-equivalence