auto result = new Abstraction(vars[$ - 1], f(vars));
foreach_reverse(e; vars[0..$ - 1]) { result = new Abstraction(e, result); }
auto result = new Abstraction(vars[$ - 1], f(vars));
foreach_reverse(e; vars[0..$ - 1]) { result = new Abstraction(e, result); }