根據Imperative monadic form我們已經可以定義AB-reduction
(set! x (if0 v t1 t2))(set! x (begin s t))→AB(if0 v (set! x t1) (set! x t2))→AB(begin s (set! x t))AB1AB2
這種方案避開了join points、編譯器不需要引入整套CPS風格、也不會造成程式碼膨脹(就像B-normalization),對stack使用最佳化(就像A-normalization)。這個做法的關鍵想法在于lexical expressions一定要在A-normalize之前先轉換成循序述句表達
AB-normalization還可以根據新的effect調整,像Bowman就展示了letregion的案例