From 1b25e0a1217906e262af8c6b6188575492e5d53b Mon Sep 17 00:00:00 2001 From: Jono Spiro Date: Tue, 3 Aug 2004 17:29:54 +0000 Subject: [PATCH] svn: r124 --- collects/mztake/mztake-syntax.ss | 46 ++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 collects/mztake/mztake-syntax.ss diff --git a/collects/mztake/mztake-syntax.ss b/collects/mztake/mztake-syntax.ss new file mode 100644 index 0000000000..936900a8e7 --- /dev/null +++ b/collects/mztake/mztake-syntax.ss @@ -0,0 +1,46 @@ +#| +(debugger + (processes (p ["sine.ss" (sin/x 5 8 bind '(sin-x x))) + (foo 10 20 bind '(sin-x x)))] + ["sine-extra.ss"])) + + (define sin/x (hold sin/x)) + (define x (+ 200 (second sin/x))) + (print-b "x:" x)) + +*** translates to *** + +(define p (create-debug-process)) +(define (create-debug-client p "sine.ss")) +(define sin/x (trace/bind 5 8 '(sin-x x))) +... +(start/resume ) +... +|# + +(module mztake-syntax (lib "frtime-big.ss" "frtime") + + (require (lib "mztake.ss" "mztake")) + (require-for-syntax (lib "list.ss")) + + (define-syntax (debugger stx) + (syntax-case stx (processes) + [(debugger + (processes (clause ...)) + expr ...) + (foldl + (lambda (cls prev) + (syntax-case prev () + [(begin transformed-expr ...) + (syntax-case cls () + [(proc-id (client trace-clause ...) ...) + (with-syntax ([(client-name ...) + (generate-temporaries #'(client ...))]) + (begin + transformed-expr ... + (define proc-id (create-debug-process)) + (define-values (client-name trace ...) + (let ([tmp (create-debug-client proc-id)]) + ) ... + + ) \ No newline at end of file