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

14 lines
266 B
Text
Raw Permalink Normal View History

2016-12-05 22:15:40 +01:00
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.