Contracts for accumulating helper procedures.

... now that we have proper tail recursion for these procedures.

svn: r16034
This commit is contained in:
Mike Sperber 2009-09-17 12:02:17 +00:00
parent b5fe3916ec
commit 34d365d3a8

View File

@ -251,6 +251,8 @@ folgende Schablone:
(lambda (lis)
(proc-helper lis z)))
(: proc ((list elem) ctr -> ...))
(define proc-helper
(lambda (lis acc)
(cond
@ -262,7 +264,8 @@ folgende Schablone:
Hier ist @scheme[proc] der Name der zu definierenden Prozedur und
@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 ...)]
macht aus dem alten Zwischenergebnis @scheme[acc] das neue
Zwischenergebnis.
@ -276,6 +279,8 @@ Beispiel:
(lambda (lis)
(invert-helper lis empty)))
(: invert ((list %a) (list %a) -> (list %a)))
(define invert-helper
(lambda (lis acc)
(cond