BuK/IIm10/BuK-Kreativaufgabe10 G2
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Scheme</language>
<code id="4e0073febe720" hidden>
(define add1
(lambda (n)
(+ n 1)))
(define sub1
(lambda (n)
(- n 1)))
(define P
(lambda (n)
(if (= n 0)
0
(sub1 n))))
</code>
== Aufgabenstellung ==
Entwickeln Sie einen Werkzeugkasten für primitiv rekursive Funktionen.
Es wird erwartet, dass aus primitiv rekursiven (Basis-)Funktionen unter Verwendung der
Kompositionstechniken (Substitution und primitive Rekursion) neue primitiv rekursive
Funktionen generiert werden. Diese sollen verwendbar sein.
Es wird nicht erwartet, dass ein universelles Beweisprogramm, das für eine gegebene
Funktion konstruktiv nachweist, dass sie primitiv rekursiv ist, entwickelt wird.
== Basisfunktionen ==
Zuerst definieren wir die Basisfunktionen.
<code id="4e0073febe788">
(define S
(lambda (n)
(add1 n)))
(define C0
(lambda n 0))
(define U
(lambda (i . n)
(letrec
([helper
(λ (counter args)
(if (= counter i)
(car args)
(helper (+ counter 1) (cdr args))))])
(helper 1 n))))
</code>
<run id="4e00745e40e2d">
(C0 1)
</run>