如果讓let表示monadic bind,讓return隱含在values下,那monadic form有以下commuting conversions
let (x U) E[x]let (x C) xlet (y (let (x C) C1)) C2let (x (if0 U C1 C2)) C=E[U]=C=let (x C) (let (y C1) C2)=if0 U (let (x C1) C) (let (x C2) C)(Left Identity)(Right Identity)(Associativity)(Commute)
ANF可以定義成monadic form用associativity跟commute這兩條規則normalize的結果