Contracts for accumulating helper procedures.
... now that we have proper tail recursion for these procedures. svn: r16034
This commit is contained in:
parent
b5fe3916ec
commit
34d365d3a8
|
@ -251,6 +251,8 @@ folgende Schablone:
|
||||||
(lambda (lis)
|
(lambda (lis)
|
||||||
(proc-helper lis z)))
|
(proc-helper lis z)))
|
||||||
|
|
||||||
|
(: proc ((list elem) ctr -> ...))
|
||||||
|
|
||||||
(define proc-helper
|
(define proc-helper
|
||||||
(lambda (lis acc)
|
(lambda (lis acc)
|
||||||
(cond
|
(cond
|
||||||
|
@ -262,7 +264,8 @@ folgende Schablone:
|
||||||
|
|
||||||
Hier ist @scheme[proc] der Name der zu definierenden Prozedur und
|
Hier ist @scheme[proc] der Name der zu definierenden Prozedur und
|
||||||
@scheme[proc-helper] der Name der Hilfsprozedur mit Akkumulator. Der
|
@scheme[proc-helper] der Name der Hilfsprozedur mit Akkumulator. Der
|
||||||
Anfangswert für den Akkumulator ist der Wert von @scheme[z]. Der
|
Anfangswert für den Akkumulator ist der Wert von @scheme[z]. Der Vertrag @scheme[ctr]
|
||||||
|
ist der Vertrag für den Akkumulator. Der
|
||||||
Ausdruck @scheme[(... (first lis) ... acc ...)]
|
Ausdruck @scheme[(... (first lis) ... acc ...)]
|
||||||
macht aus dem alten Zwischenergebnis @scheme[acc] das neue
|
macht aus dem alten Zwischenergebnis @scheme[acc] das neue
|
||||||
Zwischenergebnis.
|
Zwischenergebnis.
|
||||||
|
@ -276,6 +279,8 @@ Beispiel:
|
||||||
(lambda (lis)
|
(lambda (lis)
|
||||||
(invert-helper lis empty)))
|
(invert-helper lis empty)))
|
||||||
|
|
||||||
|
(: invert ((list %a) (list %a) -> (list %a)))
|
||||||
|
|
||||||
(define invert-helper
|
(define invert-helper
|
||||||
(lambda (lis acc)
|
(lambda (lis acc)
|
||||||
(cond
|
(cond
|
||||||
|
|
Loading…
Reference in New Issue
Block a user