(module loop_nested_in_lambda (fn make_adder (doc "Iter it.1 — a loop inside a lambda body (lambda-boundary analogue).") (type (fn-type (params (con Int)) (ret (fn-type (params (con Int)) (ret (con Int)))))) (params base) (body (lam (params (typed x (con Int))) (ret (con Int)) (body (loop ((var acc (con Int) base) (var k (con Int) 0)) (if (app == k x) acc (recur (app + acc 1) (app + k 1)))))))))