RosettaCodeData/Task/Ackermann-function/Rocq/ackermann-function-2.rocq
2026-04-30 12:34:36 -04:00

13 lines
272 B
Text

Require Import Utf8.
Section FOLD.
Context {A : Type} (f : A → A) (a : A).
Fixpoint fold (n : nat) : A :=
match n with
| O => a
| S k => f (fold k)
end.
End FOLD.
Definition ackermann : nat → nat → nat :=
fold (λ g, fold g (g (S O))) S.