From 1bb045d3580d2b21794d109461fbe064ae38f3b8 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Sun, 8 Mar 2009 23:04:16 -0400 Subject: as submitted --- ps04_combinators_amb/analyze-amb.scm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'ps04_combinators_amb/analyze-amb.scm') diff --git a/ps04_combinators_amb/analyze-amb.scm b/ps04_combinators_amb/analyze-amb.scm index 5d5ad56..cc98c12 100644 --- a/ps04_combinators_amb/analyze-amb.scm +++ b/ps04_combinators_amb/analyze-amb.scm @@ -2,6 +2,13 @@ ;;; Execution procedures take environment ;;; and two continuations: SUCCEED and FAIL +(define *amb-count* 0) +(define (show-amb-count) + (display "Number of alts considered: ") + (display *amb-count*) + (newline) + (set! *amb-count* 0)) + (define (ambeval exp env succeed fail) ((analyze exp) env succeed fail)) @@ -187,10 +194,12 @@ (let loop ((alts aprocs)) (if (null? alts) (fail) - ((car alts) env - succeed - (lambda () - (loop (cdr alts))))))))) + (begin + (set! *amb-count* (+ 1 *amb-count*)) + ((car alts) env + succeed + (lambda () + (loop (cdr alts)))))))))) (defhandler analyze analyze-amb amb?) -- cgit v1.2.3