RosettaCodeData/Task/Ackermann-function/Coq/ackermann-function-2.coq

14 lines
266 B
Coq

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