@[noinline] def g (x : Nat × Nat) := x set_option trace.compiler.boxed true set_option trace.compiler.lambda_pure true @[noinline] def f (b : Bool) (x : Nat × Nat) : (Nat × Nat) × (Nat × Nat) := let done (y : Nat × Nat) := (g (g (g x)), y) in match b with | true := match x with | (a, b) := done (a, 0) | false := match x with | (a, b) := done (0, b) @[noinline] def h {α : Type} (x : Nat × α) := x.1 def tst2 (p : Nat × (Except Nat Nat)) : Nat × Nat := match p with | (a, b) := let done (x : Nat) := (h p + 1, x) in match b with | Except.ok v := done v | Except.error w := done w def main (xs : List String) : IO Unit := IO.println $ f true (xs.head.toNat, xs.tail.head.toNat)