thread the module through syntax-case's expansion
authorAndy Wingo <wingo@pobox.com>
Mon, 30 Mar 2009 00:15:25 +0000 (17:15 -0700)
committerAndy Wingo <wingo@pobox.com>
Fri, 17 Apr 2009 13:20:16 +0000 (15:20 +0200)
* libguile/debug.h:
* libguile/debug.c (scm_procedure_module): New procedure, returns the
  module that was current when the given procedure was defined. Used by
  syncase to scope free identifiers.

* module/ice-9/psyntax-pp.scm: Recompiled.

* module/ice-9/psyntax.scm: Thread the module through the syntax
  expansion. This is harder than it would appear because in many places
  the different components of syntax objects are destructured.

* module/ice-9/syncase.scm (guile-macro): Adapt to new signature for
  syntax transformer functions.

libguile/debug.c
libguile/debug.h
module/ice-9/psyntax-pp.scm
module/ice-9/psyntax.scm
module/ice-9/syncase.scm

index 20c8d4e..fe54b64 100644 (file)
@@ -400,6 +400,37 @@ SCM_DEFINE (scm_procedure_environment, "procedure-environment", 1, 0, 0,
 }
 #undef FUNC_NAME
 
+SCM_DEFINE (scm_procedure_module, "procedure-module", 1, 0, 0, 
+           (SCM proc),
+           "Return the module that was current when this procedure was defined.\n"
+            "Free variables in this procedure are resolved relative to the\n"
+            "procedure's module.")
+#define FUNC_NAME s_scm_procedure_module
+{
+  SCM_VALIDATE_PROC (SCM_ARG1, proc);
+
+  if (scm_is_true (scm_program_p (proc)))
+    return scm_program_module (proc);
+  else
+    {
+      SCM env = scm_procedure_environment (proc);
+
+      if (scm_is_null (env))
+        return SCM_BOOL_F;
+      else
+        {
+          for (; !scm_is_null (scm_cdr (env)); env = scm_cdr (env))
+            ;
+          if (SCM_EVAL_CLOSURE_P (scm_car (env)))
+            return SCM_PACK (SCM_SMOB_DATA (scm_car (env)));
+          else
+            return SCM_BOOL_F;
+        }
+    }
+}
+#undef FUNC_NAME
+
+
 \f
 
 /* Eval in a local environment.  We would like to have the ability to
index 4e94b3c..4d16fd8 100644 (file)
@@ -140,6 +140,7 @@ SCM_API SCM scm_local_eval (SCM exp, SCM env);
 SCM_API SCM scm_reverse_lookup (SCM env, SCM data);
 SCM_API SCM scm_sys_start_stack (SCM info_id, SCM thunk);
 SCM_API SCM scm_procedure_environment (SCM proc);
+SCM_API SCM scm_procedure_module (SCM proc);
 SCM_API SCM scm_procedure_source (SCM proc);
 SCM_API SCM scm_procedure_name (SCM proc);
 SCM_API SCM scm_memoized_environment (SCM m);
dissimilarity index 81%
index 21f93f1..0d560bb 100644 (file)
@@ -1,11 +1,11 @@
-(letrec ((syntmp-lambda-var-list-153 (lambda (syntmp-vars-538) (let syntmp-lvl-539 ((syntmp-vars-540 syntmp-vars-538) (syntmp-ls-541 (quote ())) (syntmp-w-542 (quote (())))) (cond ((pair? syntmp-vars-540) (syntmp-lvl-539 (cdr syntmp-vars-540) (cons (syntmp-wrap-132 (car syntmp-vars-540) syntmp-w-542) syntmp-ls-541) syntmp-w-542)) ((syntmp-id?-104 syntmp-vars-540) (cons (syntmp-wrap-132 syntmp-vars-540 syntmp-w-542) syntmp-ls-541)) ((null? syntmp-vars-540) syntmp-ls-541) ((syntmp-syntax-object?-88 syntmp-vars-540) (syntmp-lvl-539 (syntmp-syntax-object-expression-89 syntmp-vars-540) syntmp-ls-541 (syntmp-join-wraps-123 syntmp-w-542 (syntmp-syntax-object-wrap-90 syntmp-vars-540)))) ((annotation? syntmp-vars-540) (syntmp-lvl-539 (annotation-expression syntmp-vars-540) syntmp-ls-541 syntmp-w-542)) (else (cons syntmp-vars-540 syntmp-ls-541)))))) (syntmp-gen-var-152 (lambda (syntmp-id-543) (let ((syntmp-id-544 (if (syntmp-syntax-object?-88 syntmp-id-543) (syntmp-syntax-object-expression-89 syntmp-id-543) syntmp-id-543))) (if (annotation? syntmp-id-544) (syntmp-build-annotated-81 (annotation-source syntmp-id-544) (gensym (symbol->string (annotation-expression syntmp-id-544)))) (syntmp-build-annotated-81 #f (gensym (symbol->string syntmp-id-544))))))) (syntmp-strip-151 (lambda (syntmp-x-545 syntmp-w-546) (if (memq (quote top) (syntmp-wrap-marks-107 syntmp-w-546)) (if (or (annotation? syntmp-x-545) (and (pair? syntmp-x-545) (annotation? (car syntmp-x-545)))) (syntmp-strip-annotation-150 syntmp-x-545 #f) syntmp-x-545) (let syntmp-f-547 ((syntmp-x-548 syntmp-x-545)) (cond ((syntmp-syntax-object?-88 syntmp-x-548) (syntmp-strip-151 (syntmp-syntax-object-expression-89 syntmp-x-548) (syntmp-syntax-object-wrap-90 syntmp-x-548))) ((pair? syntmp-x-548) (let ((syntmp-a-549 (syntmp-f-547 (car syntmp-x-548))) (syntmp-d-550 (syntmp-f-547 (cdr syntmp-x-548)))) (if (and (eq? syntmp-a-549 (car syntmp-x-548)) (eq? syntmp-d-550 (cdr syntmp-x-548))) syntmp-x-548 (cons syntmp-a-549 syntmp-d-550)))) ((vector? syntmp-x-548) (let ((syntmp-old-551 (vector->list syntmp-x-548))) (let ((syntmp-new-552 (map syntmp-f-547 syntmp-old-551))) (if (andmap eq? syntmp-old-551 syntmp-new-552) syntmp-x-548 (list->vector syntmp-new-552))))) (else syntmp-x-548)))))) (syntmp-strip-annotation-150 (lambda (syntmp-x-553 syntmp-parent-554) (cond ((pair? syntmp-x-553) (let ((syntmp-new-555 (cons #f #f))) (begin (if syntmp-parent-554 (set-annotation-stripped! syntmp-parent-554 syntmp-new-555)) (set-car! syntmp-new-555 (syntmp-strip-annotation-150 (car syntmp-x-553) #f)) (set-cdr! syntmp-new-555 (syntmp-strip-annotation-150 (cdr syntmp-x-553) #f)) syntmp-new-555))) ((annotation? syntmp-x-553) (or (annotation-stripped syntmp-x-553) (syntmp-strip-annotation-150 (annotation-expression syntmp-x-553) syntmp-x-553))) ((vector? syntmp-x-553) (let ((syntmp-new-556 (make-vector (vector-length syntmp-x-553)))) (begin (if syntmp-parent-554 (set-annotation-stripped! syntmp-parent-554 syntmp-new-556)) (let syntmp-loop-557 ((syntmp-i-558 (- (vector-length syntmp-x-553) 1))) (unless (syntmp-fx<-75 syntmp-i-558 0) (vector-set! syntmp-new-556 syntmp-i-558 (syntmp-strip-annotation-150 (vector-ref syntmp-x-553 syntmp-i-558) #f)) (syntmp-loop-557 (syntmp-fx--73 syntmp-i-558 1)))) syntmp-new-556))) (else syntmp-x-553)))) (syntmp-ellipsis?-149 (lambda (syntmp-x-559) (and (syntmp-nonsymbol-id?-103 syntmp-x-559) (syntmp-free-id=?-127 syntmp-x-559 (quote #(syntax-object ... ((top) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f)))))) (syntmp-chi-void-148 (lambda () (syntmp-build-annotated-81 #f (list (syntmp-build-annotated-81 #f (quote void)))))) (syntmp-eval-local-transformer-147 (lambda (syntmp-expanded-560) (let ((syntmp-p-561 (syntmp-local-eval-hook-77 syntmp-expanded-560))) (if (procedure? syntmp-p-561) syntmp-p-561 (syntax-error syntmp-p-561 "nonprocedure transformer"))))) (syntmp-chi-local-syntax-146 (lambda (syntmp-rec?-562 syntmp-e-563 syntmp-r-564 syntmp-w-565 syntmp-s-566 syntmp-k-567) ((lambda (syntmp-tmp-568) ((lambda (syntmp-tmp-569) (if syntmp-tmp-569 (apply (lambda (syntmp-_-570 syntmp-id-571 syntmp-val-572 syntmp-e1-573 syntmp-e2-574) (let ((syntmp-ids-575 syntmp-id-571)) (if (not (syntmp-valid-bound-ids?-129 syntmp-ids-575)) (syntax-error syntmp-e-563 "duplicate bound keyword in") (let ((syntmp-labels-577 (syntmp-gen-labels-110 syntmp-ids-575))) (let ((syntmp-new-w-578 (syntmp-make-binding-wrap-121 syntmp-ids-575 syntmp-labels-577 syntmp-w-565))) (syntmp-k-567 (cons syntmp-e1-573 syntmp-e2-574) (syntmp-extend-env-98 syntmp-labels-577 (let ((syntmp-w-580 (if syntmp-rec?-562 syntmp-new-w-578 syntmp-w-565)) (syntmp-trans-r-581 (syntmp-macros-only-env-100 syntmp-r-564))) (map (lambda (syntmp-x-582) (cons (quote macro) (syntmp-eval-local-transformer-147 (syntmp-chi-140 syntmp-x-582 syntmp-trans-r-581 syntmp-w-580)))) syntmp-val-572)) syntmp-r-564) syntmp-new-w-578 syntmp-s-566)))))) syntmp-tmp-569) ((lambda (syntmp-_-584) (syntax-error (syntmp-source-wrap-133 syntmp-e-563 syntmp-w-565 syntmp-s-566))) syntmp-tmp-568))) (syntax-dispatch syntmp-tmp-568 (quote (any #(each (any any)) any . each-any))))) syntmp-e-563))) (syntmp-chi-lambda-clause-145 (lambda (syntmp-e-585 syntmp-c-586 syntmp-r-587 syntmp-w-588 syntmp-k-589) ((lambda (syntmp-tmp-590) ((lambda (syntmp-tmp-591) (if syntmp-tmp-591 (apply (lambda (syntmp-id-592 syntmp-e1-593 syntmp-e2-594) (let ((syntmp-ids-595 syntmp-id-592)) (if (not (syntmp-valid-bound-ids?-129 syntmp-ids-595)) (syntax-error syntmp-e-585 "invalid parameter list in") (let ((syntmp-labels-597 (syntmp-gen-labels-110 syntmp-ids-595)) (syntmp-new-vars-598 (map syntmp-gen-var-152 syntmp-ids-595))) (syntmp-k-589 syntmp-new-vars-598 (syntmp-chi-body-144 (cons syntmp-e1-593 syntmp-e2-594) syntmp-e-585 (syntmp-extend-var-env-99 syntmp-labels-597 syntmp-new-vars-598 syntmp-r-587) (syntmp-make-binding-wrap-121 syntmp-ids-595 syntmp-labels-597 syntmp-w-588))))))) syntmp-tmp-591) ((lambda (syntmp-tmp-600) (if syntmp-tmp-600 (apply (lambda (syntmp-ids-601 syntmp-e1-602 syntmp-e2-603) (let ((syntmp-old-ids-604 (syntmp-lambda-var-list-153 syntmp-ids-601))) (if (not (syntmp-valid-bound-ids?-129 syntmp-old-ids-604)) (syntax-error syntmp-e-585 "invalid parameter list in") (let ((syntmp-labels-605 (syntmp-gen-labels-110 syntmp-old-ids-604)) (syntmp-new-vars-606 (map syntmp-gen-var-152 syntmp-old-ids-604))) (syntmp-k-589 (let syntmp-f-607 ((syntmp-ls1-608 (cdr syntmp-new-vars-606)) (syntmp-ls2-609 (car syntmp-new-vars-606))) (if (null? syntmp-ls1-608) syntmp-ls2-609 (syntmp-f-607 (cdr syntmp-ls1-608) (cons (car syntmp-ls1-608) syntmp-ls2-609)))) (syntmp-chi-body-144 (cons syntmp-e1-602 syntmp-e2-603) syntmp-e-585 (syntmp-extend-var-env-99 syntmp-labels-605 syntmp-new-vars-606 syntmp-r-587) (syntmp-make-binding-wrap-121 syntmp-old-ids-604 syntmp-labels-605 syntmp-w-588))))))) syntmp-tmp-600) ((lambda (syntmp-_-611) (syntax-error syntmp-e-585)) syntmp-tmp-590))) (syntax-dispatch syntmp-tmp-590 (quote (any any . each-any)))))) (syntax-dispatch syntmp-tmp-590 (quote (each-any any . each-any))))) syntmp-c-586))) (syntmp-chi-body-144 (lambda (syntmp-body-612 syntmp-outer-form-613 syntmp-r-614 syntmp-w-615) (let ((syntmp-r-616 (cons (quote ("placeholder" placeholder)) syntmp-r-614))) (let ((syntmp-ribcage-617 (syntmp-make-ribcage-111 (quote ()) (quote ()) (quote ())))) (let ((syntmp-w-618 (syntmp-make-wrap-106 (syntmp-wrap-marks-107 syntmp-w-615) (cons syntmp-ribcage-617 (syntmp-wrap-subst-108 syntmp-w-615))))) (let syntmp-parse-619 ((syntmp-body-620 (map (lambda (syntmp-x-626) (cons syntmp-r-616 (syntmp-wrap-132 syntmp-x-626 syntmp-w-618))) syntmp-body-612)) (syntmp-ids-621 (quote ())) (syntmp-labels-622 (quote ())) (syntmp-vars-623 (quote ())) (syntmp-vals-624 (quote ())) (syntmp-bindings-625 (quote ()))) (if (null? syntmp-body-620) (syntax-error syntmp-outer-form-613 "no expressions in body") (let ((syntmp-e-627 (cdar syntmp-body-620)) (syntmp-er-628 (caar syntmp-body-620))) (call-with-values (lambda () (syntmp-syntax-type-138 syntmp-e-627 syntmp-er-628 (quote (())) #f syntmp-ribcage-617)) (lambda (syntmp-type-629 syntmp-value-630 syntmp-e-631 syntmp-w-632 syntmp-s-633) (let ((syntmp-t-634 syntmp-type-629)) (if (memv syntmp-t-634 (quote (define-form))) (let ((syntmp-id-635 (syntmp-wrap-132 syntmp-value-630 syntmp-w-632)) (syntmp-label-636 (syntmp-gen-label-109))) (let ((syntmp-var-637 (syntmp-gen-var-152 syntmp-id-635))) (begin (syntmp-extend-ribcage!-120 syntmp-ribcage-617 syntmp-id-635 syntmp-label-636) (syntmp-parse-619 (cdr syntmp-body-620) (cons syntmp-id-635 syntmp-ids-621) (cons syntmp-label-636 syntmp-labels-622) (cons syntmp-var-637 syntmp-vars-623) (cons (cons syntmp-er-628 (syntmp-wrap-132 syntmp-e-631 syntmp-w-632)) syntmp-vals-624) (cons (cons (quote lexical) syntmp-var-637) syntmp-bindings-625))))) (if (memv syntmp-t-634 (quote (define-syntax-form))) (let ((syntmp-id-638 (syntmp-wrap-132 syntmp-value-630 syntmp-w-632)) (syntmp-label-639 (syntmp-gen-label-109))) (begin (syntmp-extend-ribcage!-120 syntmp-ribcage-617 syntmp-id-638 syntmp-label-639) (syntmp-parse-619 (cdr syntmp-body-620) (cons syntmp-id-638 syntmp-ids-621) (cons syntmp-label-639 syntmp-labels-622) syntmp-vars-623 syntmp-vals-624 (cons (cons (quote macro) (cons syntmp-er-628 (syntmp-wrap-132 syntmp-e-631 syntmp-w-632))) syntmp-bindings-625)))) (if (memv syntmp-t-634 (quote (begin-form))) ((lambda (syntmp-tmp-640) ((lambda (syntmp-tmp-641) (if syntmp-tmp-641 (apply (lambda (syntmp-_-642 syntmp-e1-643) (syntmp-parse-619 (let syntmp-f-644 ((syntmp-forms-645 syntmp-e1-643)) (if (null? syntmp-forms-645) (cdr syntmp-body-620) (cons (cons syntmp-er-628 (syntmp-wrap-132 (car syntmp-forms-645) syntmp-w-632)) (syntmp-f-644 (cdr syntmp-forms-645))))) syntmp-ids-621 syntmp-labels-622 syntmp-vars-623 syntmp-vals-624 syntmp-bindings-625)) syntmp-tmp-641) (syntax-error syntmp-tmp-640))) (syntax-dispatch syntmp-tmp-640 (quote (any . each-any))))) syntmp-e-631) (if (memv syntmp-t-634 (quote (local-syntax-form))) (syntmp-chi-local-syntax-146 syntmp-value-630 syntmp-e-631 syntmp-er-628 syntmp-w-632 syntmp-s-633 (lambda (syntmp-forms-647 syntmp-er-648 syntmp-w-649 syntmp-s-650) (syntmp-parse-619 (let syntmp-f-651 ((syntmp-forms-652 syntmp-forms-647)) (if (null? syntmp-forms-652) (cdr syntmp-body-620) (cons (cons syntmp-er-648 (syntmp-wrap-132 (car syntmp-forms-652) syntmp-w-649)) (syntmp-f-651 (cdr syntmp-forms-652))))) syntmp-ids-621 syntmp-labels-622 syntmp-vars-623 syntmp-vals-624 syntmp-bindings-625))) (if (null? syntmp-ids-621) (syntmp-build-sequence-83 #f (map (lambda (syntmp-x-653) (syntmp-chi-140 (cdr syntmp-x-653) (car syntmp-x-653) (quote (())))) (cons (cons syntmp-er-628 (syntmp-source-wrap-133 syntmp-e-631 syntmp-w-632 syntmp-s-633)) (cdr syntmp-body-620)))) (begin (if (not (syntmp-valid-bound-ids?-129 syntmp-ids-621)) (syntax-error syntmp-outer-form-613 "invalid or duplicate identifier in definition")) (let syntmp-loop-654 ((syntmp-bs-655 syntmp-bindings-625) (syntmp-er-cache-656 #f) (syntmp-r-cache-657 #f)) (if (not (null? syntmp-bs-655)) (let ((syntmp-b-658 (car syntmp-bs-655))) (if (eq? (car syntmp-b-658) (quote macro)) (let ((syntmp-er-659 (cadr syntmp-b-658))) (let ((syntmp-r-cache-660 (if (eq? syntmp-er-659 syntmp-er-cache-656) syntmp-r-cache-657 (syntmp-macros-only-env-100 syntmp-er-659)))) (begin (set-cdr! syntmp-b-658 (syntmp-eval-local-transformer-147 (syntmp-chi-140 (cddr syntmp-b-658) syntmp-r-cache-660 (quote (()))))) (syntmp-loop-654 (cdr syntmp-bs-655) syntmp-er-659 syntmp-r-cache-660)))) (syntmp-loop-654 (cdr syntmp-bs-655) syntmp-er-cache-656 syntmp-r-cache-657))))) (set-cdr! syntmp-r-616 (syntmp-extend-env-98 syntmp-labels-622 syntmp-bindings-625 (cdr syntmp-r-616))) (syntmp-build-letrec-86 #f syntmp-vars-623 (map (lambda (syntmp-x-661) (syntmp-chi-140 (cdr syntmp-x-661) (car syntmp-x-661) (quote (())))) syntmp-vals-624) (syntmp-build-sequence-83 #f (map (lambda (syntmp-x-662) (syntmp-chi-140 (cdr syntmp-x-662) (car syntmp-x-662) (quote (())))) (cons (cons syntmp-er-628 (syntmp-source-wrap-133 syntmp-e-631 syntmp-w-632 syntmp-s-633)) (cdr syntmp-body-620)))))))))))))))))))))) (syntmp-chi-macro-143 (lambda (syntmp-p-663 syntmp-e-664 syntmp-r-665 syntmp-w-666 syntmp-rib-667) (letrec ((syntmp-rebuild-macro-output-668 (lambda (syntmp-x-669 syntmp-m-670) (cond ((pair? syntmp-x-669) (cons (syntmp-rebuild-macro-output-668 (car syntmp-x-669) syntmp-m-670) (syntmp-rebuild-macro-output-668 (cdr syntmp-x-669) syntmp-m-670))) ((syntmp-syntax-object?-88 syntmp-x-669) (let ((syntmp-w-671 (syntmp-syntax-object-wrap-90 syntmp-x-669))) (let ((syntmp-ms-672 (syntmp-wrap-marks-107 syntmp-w-671)) (syntmp-s-673 (syntmp-wrap-subst-108 syntmp-w-671))) (syntmp-make-syntax-object-87 (syntmp-syntax-object-expression-89 syntmp-x-669) (if (and (pair? syntmp-ms-672) (eq? (car syntmp-ms-672) #f)) (syntmp-make-wrap-106 (cdr syntmp-ms-672) (if syntmp-rib-667 (cons syntmp-rib-667 (cdr syntmp-s-673)) (cdr syntmp-s-673))) (syntmp-make-wrap-106 (cons syntmp-m-670 syntmp-ms-672) (if syntmp-rib-667 (cons syntmp-rib-667 (cons (quote shift) syntmp-s-673)) (cons (quote shift) syntmp-s-673)))) (syntmp-syntax-object-module-91 syntmp-x-669))))) ((vector? syntmp-x-669) (let ((syntmp-n-674 (vector-length syntmp-x-669))) (let ((syntmp-v-675 (make-vector syntmp-n-674))) (let syntmp-doloop-676 ((syntmp-i-677 0)) (if (syntmp-fx=-74 syntmp-i-677 syntmp-n-674) syntmp-v-675 (begin (vector-set! syntmp-v-675 syntmp-i-677 (syntmp-rebuild-macro-output-668 (vector-ref syntmp-x-669 syntmp-i-677) syntmp-m-670)) (syntmp-doloop-676 (syntmp-fx+-72 syntmp-i-677 1)))))))) ((symbol? syntmp-x-669) (syntax-error syntmp-x-669 "encountered raw symbol in macro output")) (else syntmp-x-669))))) (syntmp-rebuild-macro-output-668 (syntmp-p-663 (syntmp-wrap-132 syntmp-e-664 (syntmp-anti-mark-119 syntmp-w-666))) (string #\m))))) (syntmp-chi-application-142 (lambda (syntmp-x-678 syntmp-e-679 syntmp-r-680 syntmp-w-681 syntmp-s-682) ((lambda (syntmp-tmp-683) ((lambda (syntmp-tmp-684) (if syntmp-tmp-684 (apply (lambda (syntmp-e0-685 syntmp-e1-686) (syntmp-build-annotated-81 syntmp-s-682 (cons syntmp-x-678 (map (lambda (syntmp-e-687) (syntmp-chi-140 syntmp-e-687 syntmp-r-680 syntmp-w-681)) syntmp-e1-686)))) syntmp-tmp-684) (syntax-error syntmp-tmp-683))) (syntax-dispatch syntmp-tmp-683 (quote (any . each-any))))) syntmp-e-679))) (syntmp-chi-expr-141 (lambda (syntmp-type-689 syntmp-value-690 syntmp-e-691 syntmp-r-692 syntmp-w-693 syntmp-s-694) (let ((syntmp-t-695 syntmp-type-689)) (if (memv syntmp-t-695 (quote (lexical))) (syntmp-build-annotated-81 syntmp-s-694 syntmp-value-690) (if (memv syntmp-t-695 (quote (core external-macro))) (syntmp-value-690 syntmp-e-691 syntmp-r-692 syntmp-w-693 syntmp-s-694) (if (memv syntmp-t-695 (quote (lexical-call))) (syntmp-chi-application-142 (syntmp-build-annotated-81 (syntmp-source-annotation-95 (car syntmp-e-691)) syntmp-value-690) syntmp-e-691 syntmp-r-692 syntmp-w-693 syntmp-s-694) (if (memv syntmp-t-695 (quote (global-call))) (syntmp-chi-application-142 (syntmp-build-annotated-81 (syntmp-source-annotation-95 (car syntmp-e-691)) (make-module-ref #f syntmp-value-690 #f)) syntmp-e-691 syntmp-r-692 syntmp-w-693 syntmp-s-694) (if (memv syntmp-t-695 (quote (constant))) (syntmp-build-data-82 syntmp-s-694 (syntmp-strip-151 (syntmp-source-wrap-133 syntmp-e-691 syntmp-w-693 syntmp-s-694) (quote (())))) (if (memv syntmp-t-695 (quote (global))) (syntmp-build-annotated-81 syntmp-s-694 (make-module-ref #f syntmp-value-690 #f)) (if (memv syntmp-t-695 (quote (call))) (syntmp-chi-application-142 (syntmp-chi-140 (car syntmp-e-691) syntmp-r-692 syntmp-w-693) syntmp-e-691 syntmp-r-692 syntmp-w-693 syntmp-s-694) (if (memv syntmp-t-695 (quote (begin-form))) ((lambda (syntmp-tmp-696) ((lambda (syntmp-tmp-697) (if syntmp-tmp-697 (apply (lambda (syntmp-_-698 syntmp-e1-699 syntmp-e2-700) (syntmp-chi-sequence-134 (cons syntmp-e1-699 syntmp-e2-700) syntmp-r-692 syntmp-w-693 syntmp-s-694)) syntmp-tmp-697) (syntax-error syntmp-tmp-696))) (syntax-dispatch syntmp-tmp-696 (quote (any any . each-any))))) syntmp-e-691) (if (memv syntmp-t-695 (quote (local-syntax-form))) (syntmp-chi-local-syntax-146 syntmp-value-690 syntmp-e-691 syntmp-r-692 syntmp-w-693 syntmp-s-694 syntmp-chi-sequence-134) (if (memv syntmp-t-695 (quote (eval-when-form))) ((lambda (syntmp-tmp-702) ((lambda (syntmp-tmp-703) (if syntmp-tmp-703 (apply (lambda (syntmp-_-704 syntmp-x-705 syntmp-e1-706 syntmp-e2-707) (let ((syntmp-when-list-708 (syntmp-chi-when-list-137 syntmp-e-691 syntmp-x-705 syntmp-w-693))) (if (memq (quote eval) syntmp-when-list-708) (syntmp-chi-sequence-134 (cons syntmp-e1-706 syntmp-e2-707) syntmp-r-692 syntmp-w-693 syntmp-s-694) (syntmp-chi-void-148)))) syntmp-tmp-703) (syntax-error syntmp-tmp-702))) (syntax-dispatch syntmp-tmp-702 (quote (any each-any any . each-any))))) syntmp-e-691) (if (memv syntmp-t-695 (quote (define-form define-syntax-form))) (syntax-error (syntmp-wrap-132 syntmp-value-690 syntmp-w-693) "invalid context for definition of") (if (memv syntmp-t-695 (quote (syntax))) (syntax-error (syntmp-source-wrap-133 syntmp-e-691 syntmp-w-693 syntmp-s-694) "reference to pattern variable outside syntax form") (if (memv syntmp-t-695 (quote (displaced-lexical))) (syntax-error (syntmp-source-wrap-133 syntmp-e-691 syntmp-w-693 syntmp-s-694) "reference to identifier outside its scope") (syntax-error (syntmp-source-wrap-133 syntmp-e-691 syntmp-w-693 syntmp-s-694)))))))))))))))))) (syntmp-chi-140 (lambda (syntmp-e-711 syntmp-r-712 syntmp-w-713) (call-with-values (lambda () (syntmp-syntax-type-138 syntmp-e-711 syntmp-r-712 syntmp-w-713 #f #f)) (lambda (syntmp-type-714 syntmp-value-715 syntmp-e-716 syntmp-w-717 syntmp-s-718) (syntmp-chi-expr-141 syntmp-type-714 syntmp-value-715 syntmp-e-716 syntmp-r-712 syntmp-w-717 syntmp-s-718))))) (syntmp-chi-top-139 (lambda (syntmp-e-719 syntmp-r-720 syntmp-w-721 syntmp-m-722 syntmp-esew-723) (call-with-values (lambda () (syntmp-syntax-type-138 syntmp-e-719 syntmp-r-720 syntmp-w-721 #f #f)) (lambda (syntmp-type-736 syntmp-value-737 syntmp-e-738 syntmp-w-739 syntmp-s-740) (let ((syntmp-t-741 syntmp-type-736)) (if (memv syntmp-t-741 (quote (begin-form))) ((lambda (syntmp-tmp-742) ((lambda (syntmp-tmp-743) (if syntmp-tmp-743 (apply (lambda (syntmp-_-744) (syntmp-chi-void-148)) syntmp-tmp-743) ((lambda (syntmp-tmp-745) (if syntmp-tmp-745 (apply (lambda (syntmp-_-746 syntmp-e1-747 syntmp-e2-748) (syntmp-chi-top-sequence-135 (cons syntmp-e1-747 syntmp-e2-748) syntmp-r-720 syntmp-w-739 syntmp-s-740 syntmp-m-722 syntmp-esew-723)) syntmp-tmp-745) (syntax-error syntmp-tmp-742))) (syntax-dispatch syntmp-tmp-742 (quote (any any . each-any)))))) (syntax-dispatch syntmp-tmp-742 (quote (any))))) syntmp-e-738) (if (memv syntmp-t-741 (quote (local-syntax-form))) (syntmp-chi-local-syntax-146 syntmp-value-737 syntmp-e-738 syntmp-r-720 syntmp-w-739 syntmp-s-740 (lambda (syntmp-body-750 syntmp-r-751 syntmp-w-752 syntmp-s-753) (syntmp-chi-top-sequence-135 syntmp-body-750 syntmp-r-751 syntmp-w-752 syntmp-s-753 syntmp-m-722 syntmp-esew-723))) (if (memv syntmp-t-741 (quote (eval-when-form))) ((lambda (syntmp-tmp-754) ((lambda (syntmp-tmp-755) (if syntmp-tmp-755 (apply (lambda (syntmp-_-756 syntmp-x-757 syntmp-e1-758 syntmp-e2-759) (let ((syntmp-when-list-760 (syntmp-chi-when-list-137 syntmp-e-738 syntmp-x-757 syntmp-w-739)) (syntmp-body-761 (cons syntmp-e1-758 syntmp-e2-759))) (cond ((eq? syntmp-m-722 (quote e)) (if (memq (quote eval) syntmp-when-list-760) (syntmp-chi-top-sequence-135 syntmp-body-761 syntmp-r-720 syntmp-w-739 syntmp-s-740 (quote e) (quote (eval))) (syntmp-chi-void-148))) ((memq (quote load) syntmp-when-list-760) (if (or (memq (quote compile) syntmp-when-list-760) (and (eq? syntmp-m-722 (quote c&e)) (memq (quote eval) syntmp-when-list-760))) (syntmp-chi-top-sequence-135 syntmp-body-761 syntmp-r-720 syntmp-w-739 syntmp-s-740 (quote c&e) (quote (compile load))) (if (memq syntmp-m-722 (quote (c c&e))) (syntmp-chi-top-sequence-135 syntmp-body-761 syntmp-r-720 syntmp-w-739 syntmp-s-740 (quote c) (quote (load))) (syntmp-chi-void-148)))) ((or (memq (quote compile) syntmp-when-list-760) (and (eq? syntmp-m-722 (quote c&e)) (memq (quote eval) syntmp-when-list-760))) (syntmp-top-level-eval-hook-76 (syntmp-chi-top-sequence-135 syntmp-body-761 syntmp-r-720 syntmp-w-739 syntmp-s-740 (quote e) (quote (eval)))) (syntmp-chi-void-148)) (else (syntmp-chi-void-148))))) syntmp-tmp-755) (syntax-error syntmp-tmp-754))) (syntax-dispatch syntmp-tmp-754 (quote (any each-any any . each-any))))) syntmp-e-738) (if (memv syntmp-t-741 (quote (define-syntax-form))) (let ((syntmp-n-764 (syntmp-id-var-name-126 syntmp-value-737 syntmp-w-739)) (syntmp-r-765 (syntmp-macros-only-env-100 syntmp-r-720))) (let ((syntmp-t-766 syntmp-m-722)) (if (memv syntmp-t-766 (quote (c))) (if (memq (quote compile) syntmp-esew-723) (let ((syntmp-e-767 (syntmp-chi-install-global-136 syntmp-n-764 (syntmp-chi-140 syntmp-e-738 syntmp-r-765 syntmp-w-739)))) (begin (syntmp-top-level-eval-hook-76 syntmp-e-767) (if (memq (quote load) syntmp-esew-723) syntmp-e-767 (syntmp-chi-void-148)))) (if (memq (quote load) syntmp-esew-723) (syntmp-chi-install-global-136 syntmp-n-764 (syntmp-chi-140 syntmp-e-738 syntmp-r-765 syntmp-w-739)) (syntmp-chi-void-148))) (if (memv syntmp-t-766 (quote (c&e))) (let ((syntmp-e-768 (syntmp-chi-install-global-136 syntmp-n-764 (syntmp-chi-140 syntmp-e-738 syntmp-r-765 syntmp-w-739)))) (begin (syntmp-top-level-eval-hook-76 syntmp-e-768) syntmp-e-768)) (begin (if (memq (quote eval) syntmp-esew-723) (syntmp-top-level-eval-hook-76 (syntmp-chi-install-global-136 syntmp-n-764 (syntmp-chi-140 syntmp-e-738 syntmp-r-765 syntmp-w-739)))) (syntmp-chi-void-148)))))) (if (memv syntmp-t-741 (quote (define-form))) (let ((syntmp-n-769 (syntmp-id-var-name-126 syntmp-value-737 syntmp-w-739))) (let ((syntmp-type-770 (syntmp-binding-type-96 (syntmp-lookup-101 syntmp-n-769 syntmp-r-720)))) (let ((syntmp-t-771 syntmp-type-770)) (if (memv syntmp-t-771 (quote (global))) (let ((syntmp-x-772 (syntmp-build-annotated-81 syntmp-s-740 (list (quote define) syntmp-n-769 (syntmp-chi-140 syntmp-e-738 syntmp-r-720 syntmp-w-739))))) (begin (if (eq? syntmp-m-722 (quote c&e)) (syntmp-top-level-eval-hook-76 syntmp-x-772)) syntmp-x-772)) (if (memv syntmp-t-771 (quote (displaced-lexical))) (syntax-error (syntmp-wrap-132 syntmp-value-737 syntmp-w-739) "identifier out of context") (if (eq? syntmp-type-770 (quote external-macro)) (let ((syntmp-x-773 (syntmp-build-annotated-81 syntmp-s-740 (list (quote define) syntmp-n-769 (syntmp-chi-140 syntmp-e-738 syntmp-r-720 syntmp-w-739))))) (begin (if (eq? syntmp-m-722 (quote c&e)) (syntmp-top-level-eval-hook-76 syntmp-x-773)) syntmp-x-773)) (syntax-error (syntmp-wrap-132 syntmp-value-737 syntmp-w-739) "cannot define keyword at top level"))))))) (let ((syntmp-x-774 (syntmp-chi-expr-141 syntmp-type-736 syntmp-value-737 syntmp-e-738 syntmp-r-720 syntmp-w-739 syntmp-s-740))) (begin (if (eq? syntmp-m-722 (quote c&e)) (syntmp-top-level-eval-hook-76 syntmp-x-774)) syntmp-x-774)))))))))))) (syntmp-syntax-type-138 (lambda (syntmp-e-775 syntmp-r-776 syntmp-w-777 syntmp-s-778 syntmp-rib-779) (cond ((symbol? syntmp-e-775) (let ((syntmp-n-780 (syntmp-id-var-name-126 syntmp-e-775 syntmp-w-777))) (let ((syntmp-b-781 (syntmp-lookup-101 syntmp-n-780 syntmp-r-776))) (let ((syntmp-type-782 (syntmp-binding-type-96 syntmp-b-781))) (let ((syntmp-t-783 syntmp-type-782)) (if (memv syntmp-t-783 (quote (lexical))) (values syntmp-type-782 (syntmp-binding-value-97 syntmp-b-781) syntmp-e-775 syntmp-w-777 syntmp-s-778) (if (memv syntmp-t-783 (quote (global))) (values syntmp-type-782 syntmp-n-780 syntmp-e-775 syntmp-w-777 syntmp-s-778) (if (memv syntmp-t-783 (quote (macro))) (syntmp-syntax-type-138 (syntmp-chi-macro-143 (syntmp-binding-value-97 syntmp-b-781) syntmp-e-775 syntmp-r-776 syntmp-w-777 syntmp-rib-779) syntmp-r-776 (quote (())) syntmp-s-778 syntmp-rib-779) (values syntmp-type-782 (syntmp-binding-value-97 syntmp-b-781) syntmp-e-775 syntmp-w-777 syntmp-s-778))))))))) ((pair? syntmp-e-775) (let ((syntmp-first-784 (car syntmp-e-775))) (if (syntmp-id?-104 syntmp-first-784) (let ((syntmp-n-785 (syntmp-id-var-name-126 syntmp-first-784 syntmp-w-777))) (let ((syntmp-b-786 (syntmp-lookup-101 syntmp-n-785 syntmp-r-776))) (let ((syntmp-type-787 (syntmp-binding-type-96 syntmp-b-786))) (let ((syntmp-t-788 syntmp-type-787)) (if (memv syntmp-t-788 (quote (lexical))) (values (quote lexical-call) (syntmp-binding-value-97 syntmp-b-786) syntmp-e-775 syntmp-w-777 syntmp-s-778) (if (memv syntmp-t-788 (quote (global))) (values (quote global-call) syntmp-n-785 syntmp-e-775 syntmp-w-777 syntmp-s-778) (if (memv syntmp-t-788 (quote (macro))) (syntmp-syntax-type-138 (syntmp-chi-macro-143 (syntmp-binding-value-97 syntmp-b-786) syntmp-e-775 syntmp-r-776 syntmp-w-777 syntmp-rib-779) syntmp-r-776 (quote (())) syntmp-s-778 syntmp-rib-779) (if (memv syntmp-t-788 (quote (core external-macro))) (values syntmp-type-787 (syntmp-binding-value-97 syntmp-b-786) syntmp-e-775 syntmp-w-777 syntmp-s-778) (if (memv syntmp-t-788 (quote (local-syntax))) (values (quote local-syntax-form) (syntmp-binding-value-97 syntmp-b-786) syntmp-e-775 syntmp-w-777 syntmp-s-778) (if (memv syntmp-t-788 (quote (begin))) (values (quote begin-form) #f syntmp-e-775 syntmp-w-777 syntmp-s-778) (if (memv syntmp-t-788 (quote (eval-when))) (values (quote eval-when-form) #f syntmp-e-775 syntmp-w-777 syntmp-s-778) (if (memv syntmp-t-788 (quote (define))) ((lambda (syntmp-tmp-789) ((lambda (syntmp-tmp-790) (if (if syntmp-tmp-790 (apply (lambda (syntmp-_-791 syntmp-name-792 syntmp-val-793) (syntmp-id?-104 syntmp-name-792)) syntmp-tmp-790) #f) (apply (lambda (syntmp-_-794 syntmp-name-795 syntmp-val-796) (values (quote define-form) syntmp-name-795 syntmp-val-796 syntmp-w-777 syntmp-s-778)) syntmp-tmp-790) ((lambda (syntmp-tmp-797) (if (if syntmp-tmp-797 (apply (lambda (syntmp-_-798 syntmp-name-799 syntmp-args-800 syntmp-e1-801 syntmp-e2-802) (and (syntmp-id?-104 syntmp-name-799) (syntmp-valid-bound-ids?-129 (syntmp-lambda-var-list-153 syntmp-args-800)))) syntmp-tmp-797) #f) (apply (lambda (syntmp-_-803 syntmp-name-804 syntmp-args-805 syntmp-e1-806 syntmp-e2-807) (values (quote define-form) (syntmp-wrap-132 syntmp-name-804 syntmp-w-777) (cons (quote #(syntax-object lambda ((top) #(ribcage #(_ name args e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(t) #(("m" top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(type) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(b) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(n) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(first) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(e r w s rib) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f)) (syntmp-wrap-132 (cons syntmp-args-805 (cons syntmp-e1-806 syntmp-e2-807)) syntmp-w-777)) (quote (())) syntmp-s-778)) syntmp-tmp-797) ((lambda (syntmp-tmp-809) (if (if syntmp-tmp-809 (apply (lambda (syntmp-_-810 syntmp-name-811) (syntmp-id?-104 syntmp-name-811)) syntmp-tmp-809) #f) (apply (lambda (syntmp-_-812 syntmp-name-813) (values (quote define-form) (syntmp-wrap-132 syntmp-name-813 syntmp-w-777) (quote (#(syntax-object void ((top) #(ribcage #(_ name) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(t) #(("m" top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(type) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(b) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(n) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(first) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(e r w s rib) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f))) (quote (())) syntmp-s-778)) syntmp-tmp-809) (syntax-error syntmp-tmp-789))) (syntax-dispatch syntmp-tmp-789 (quote (any any)))))) (syntax-dispatch syntmp-tmp-789 (quote (any (any . any) any . each-any)))))) (syntax-dispatch syntmp-tmp-789 (quote (any any any))))) syntmp-e-775) (if (memv syntmp-t-788 (quote (define-syntax))) ((lambda (syntmp-tmp-814) ((lambda (syntmp-tmp-815) (if (if syntmp-tmp-815 (apply (lambda (syntmp-_-816 syntmp-name-817 syntmp-val-818) (syntmp-id?-104 syntmp-name-817)) syntmp-tmp-815) #f) (apply (lambda (syntmp-_-819 syntmp-name-820 syntmp-val-821) (values (quote define-syntax-form) syntmp-name-820 syntmp-val-821 syntmp-w-777 syntmp-s-778)) syntmp-tmp-815) (syntax-error syntmp-tmp-814))) (syntax-dispatch syntmp-tmp-814 (quote (any any any))))) syntmp-e-775) (values (quote call) #f syntmp-e-775 syntmp-w-777 syntmp-s-778)))))))))))))) (values (quote call) #f syntmp-e-775 syntmp-w-777 syntmp-s-778)))) ((syntmp-syntax-object?-88 syntmp-e-775) (syntmp-syntax-type-138 (syntmp-syntax-object-expression-89 syntmp-e-775) syntmp-r-776 (syntmp-join-wraps-123 syntmp-w-777 (syntmp-syntax-object-wrap-90 syntmp-e-775)) #f syntmp-rib-779)) ((annotation? syntmp-e-775) (syntmp-syntax-type-138 (annotation-expression syntmp-e-775) syntmp-r-776 syntmp-w-777 (annotation-source syntmp-e-775) syntmp-rib-779)) ((self-evaluating? syntmp-e-775) (values (quote constant) #f syntmp-e-775 syntmp-w-777 syntmp-s-778)) (else (values (quote other) #f syntmp-e-775 syntmp-w-777 syntmp-s-778))))) (syntmp-chi-when-list-137 (lambda (syntmp-e-822 syntmp-when-list-823 syntmp-w-824) (let syntmp-f-825 ((syntmp-when-list-826 syntmp-when-list-823) (syntmp-situations-827 (quote ()))) (if (null? syntmp-when-list-826) syntmp-situations-827 (syntmp-f-825 (cdr syntmp-when-list-826) (cons (let ((syntmp-x-828 (car syntmp-when-list-826))) (cond ((syntmp-free-id=?-127 syntmp-x-828 (quote #(syntax-object compile ((top) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f when-list situations) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(e when-list w) #((top) (top) (top)) #("i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f))) (quote compile)) ((syntmp-free-id=?-127 syntmp-x-828 (quote #(syntax-object load ((top) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f when-list situations) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(e when-list w) #((top) (top) (top)) #("i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f))) (quote load)) ((syntmp-free-id=?-127 syntmp-x-828 (quote #(syntax-object eval ((top) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f when-list situations) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(e when-list w) #((top) (top) (top)) #("i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f))) (quote eval)) (else (syntax-error (syntmp-wrap-132 syntmp-x-828 syntmp-w-824) "invalid eval-when situation")))) syntmp-situations-827)))))) (syntmp-chi-install-global-136 (lambda (syntmp-name-829 syntmp-e-830) (syntmp-build-annotated-81 #f (list (syntmp-build-annotated-81 #f (quote install-global-transformer)) (syntmp-build-data-82 #f syntmp-name-829) syntmp-e-830)))) (syntmp-chi-top-sequence-135 (lambda (syntmp-body-831 syntmp-r-832 syntmp-w-833 syntmp-s-834 syntmp-m-835 syntmp-esew-836) (syntmp-build-sequence-83 syntmp-s-834 (let syntmp-dobody-837 ((syntmp-body-838 syntmp-body-831) (syntmp-r-839 syntmp-r-832) (syntmp-w-840 syntmp-w-833) (syntmp-m-841 syntmp-m-835) (syntmp-esew-842 syntmp-esew-836)) (if (null? syntmp-body-838) (quote ()) (let ((syntmp-first-843 (syntmp-chi-top-139 (car syntmp-body-838) syntmp-r-839 syntmp-w-840 syntmp-m-841 syntmp-esew-842))) (cons syntmp-first-843 (syntmp-dobody-837 (cdr syntmp-body-838) syntmp-r-839 syntmp-w-840 syntmp-m-841 syntmp-esew-842)))))))) (syntmp-chi-sequence-134 (lambda (syntmp-body-844 syntmp-r-845 syntmp-w-846 syntmp-s-847) (syntmp-build-sequence-83 syntmp-s-847 (let syntmp-dobody-848 ((syntmp-body-849 syntmp-body-844) (syntmp-r-850 syntmp-r-845) (syntmp-w-851 syntmp-w-846)) (if (null? syntmp-body-849) (quote ()) (let ((syntmp-first-852 (syntmp-chi-140 (car syntmp-body-849) syntmp-r-850 syntmp-w-851))) (cons syntmp-first-852 (syntmp-dobody-848 (cdr syntmp-body-849) syntmp-r-850 syntmp-w-851)))))))) (syntmp-source-wrap-133 (lambda (syntmp-x-853 syntmp-w-854 syntmp-s-855) (syntmp-wrap-132 (if syntmp-s-855 (make-annotation syntmp-x-853 syntmp-s-855 #f) syntmp-x-853) syntmp-w-854))) (syntmp-wrap-132 (lambda (syntmp-x-856 syntmp-w-857) (cond ((and (null? (syntmp-wrap-marks-107 syntmp-w-857)) (null? (syntmp-wrap-subst-108 syntmp-w-857))) syntmp-x-856) ((syntmp-syntax-object?-88 syntmp-x-856) (syntmp-make-syntax-object-87 (syntmp-syntax-object-expression-89 syntmp-x-856) (syntmp-join-wraps-123 syntmp-w-857 (syntmp-syntax-object-wrap-90 syntmp-x-856)) (syntmp-syntax-object-module-91 syntmp-x-856))) ((null? syntmp-x-856) syntmp-x-856) (else (syntmp-make-syntax-object-87 syntmp-x-856 syntmp-w-857 #f))))) (syntmp-bound-id-member?-131 (lambda (syntmp-x-858 syntmp-list-859) (and (not (null? syntmp-list-859)) (or (syntmp-bound-id=?-128 syntmp-x-858 (car syntmp-list-859)) (syntmp-bound-id-member?-131 syntmp-x-858 (cdr syntmp-list-859)))))) (syntmp-distinct-bound-ids?-130 (lambda (syntmp-ids-860) (let syntmp-distinct?-861 ((syntmp-ids-862 syntmp-ids-860)) (or (null? syntmp-ids-862) (and (not (syntmp-bound-id-member?-131 (car syntmp-ids-862) (cdr syntmp-ids-862))) (syntmp-distinct?-861 (cdr syntmp-ids-862))))))) (syntmp-valid-bound-ids?-129 (lambda (syntmp-ids-863) (and (let syntmp-all-ids?-864 ((syntmp-ids-865 syntmp-ids-863)) (or (null? syntmp-ids-865) (and (syntmp-id?-104 (car syntmp-ids-865)) (syntmp-all-ids?-864 (cdr syntmp-ids-865))))) (syntmp-distinct-bound-ids?-130 syntmp-ids-863)))) (syntmp-bound-id=?-128 (lambda (syntmp-i-866 syntmp-j-867) (if (and (syntmp-syntax-object?-88 syntmp-i-866) (syntmp-syntax-object?-88 syntmp-j-867)) (and (eq? (let ((syntmp-e-868 (syntmp-syntax-object-expression-89 syntmp-i-866))) (if (annotation? syntmp-e-868) (annotation-expression syntmp-e-868) syntmp-e-868)) (let ((syntmp-e-869 (syntmp-syntax-object-expression-89 syntmp-j-867))) (if (annotation? syntmp-e-869) (annotation-expression syntmp-e-869) syntmp-e-869))) (syntmp-same-marks?-125 (syntmp-wrap-marks-107 (syntmp-syntax-object-wrap-90 syntmp-i-866)) (syntmp-wrap-marks-107 (syntmp-syntax-object-wrap-90 syntmp-j-867)))) (eq? (let ((syntmp-e-870 syntmp-i-866)) (if (annotation? syntmp-e-870) (annotation-expression syntmp-e-870) syntmp-e-870)) (let ((syntmp-e-871 syntmp-j-867)) (if (annotation? syntmp-e-871) (annotation-expression syntmp-e-871) syntmp-e-871)))))) (syntmp-free-id=?-127 (lambda (syntmp-i-872 syntmp-j-873) (and (eq? (let ((syntmp-x-874 syntmp-i-872)) (let ((syntmp-e-875 (if (syntmp-syntax-object?-88 syntmp-x-874) (syntmp-syntax-object-expression-89 syntmp-x-874) syntmp-x-874))) (if (annotation? syntmp-e-875) (annotation-expression syntmp-e-875) syntmp-e-875))) (let ((syntmp-x-876 syntmp-j-873)) (let ((syntmp-e-877 (if (syntmp-syntax-object?-88 syntmp-x-876) (syntmp-syntax-object-expression-89 syntmp-x-876) syntmp-x-876))) (if (annotation? syntmp-e-877) (annotation-expression syntmp-e-877) syntmp-e-877)))) (eq? (syntmp-id-var-name-126 syntmp-i-872 (quote (()))) (syntmp-id-var-name-126 syntmp-j-873 (quote (()))))))) (syntmp-id-var-name-126 (lambda (syntmp-id-878 syntmp-w-879) (letrec ((syntmp-search-vector-rib-882 (lambda (syntmp-sym-893 syntmp-subst-894 syntmp-marks-895 syntmp-symnames-896 syntmp-ribcage-897) (let ((syntmp-n-898 (vector-length syntmp-symnames-896))) (let syntmp-f-899 ((syntmp-i-900 0)) (cond ((syntmp-fx=-74 syntmp-i-900 syntmp-n-898) (syntmp-search-880 syntmp-sym-893 (cdr syntmp-subst-894) syntmp-marks-895)) ((and (eq? (vector-ref syntmp-symnames-896 syntmp-i-900) syntmp-sym-893) (syntmp-same-marks?-125 syntmp-marks-895 (vector-ref (syntmp-ribcage-marks-114 syntmp-ribcage-897) syntmp-i-900))) (values (vector-ref (syntmp-ribcage-labels-115 syntmp-ribcage-897) syntmp-i-900) syntmp-marks-895)) (else (syntmp-f-899 (syntmp-fx+-72 syntmp-i-900 1)))))))) (syntmp-search-list-rib-881 (lambda (syntmp-sym-901 syntmp-subst-902 syntmp-marks-903 syntmp-symnames-904 syntmp-ribcage-905) (let syntmp-f-906 ((syntmp-symnames-907 syntmp-symnames-904) (syntmp-i-908 0)) (cond ((null? syntmp-symnames-907) (syntmp-search-880 syntmp-sym-901 (cdr syntmp-subst-902) syntmp-marks-903)) ((and (eq? (car syntmp-symnames-907) syntmp-sym-901) (syntmp-same-marks?-125 syntmp-marks-903 (list-ref (syntmp-ribcage-marks-114 syntmp-ribcage-905) syntmp-i-908))) (values (list-ref (syntmp-ribcage-labels-115 syntmp-ribcage-905) syntmp-i-908) syntmp-marks-903)) (else (syntmp-f-906 (cdr syntmp-symnames-907) (syntmp-fx+-72 syntmp-i-908 1))))))) (syntmp-search-880 (lambda (syntmp-sym-909 syntmp-subst-910 syntmp-marks-911) (if (null? syntmp-subst-910) (values #f syntmp-marks-911) (let ((syntmp-fst-912 (car syntmp-subst-910))) (if (eq? syntmp-fst-912 (quote shift)) (syntmp-search-880 syntmp-sym-909 (cdr syntmp-subst-910) (cdr syntmp-marks-911)) (let ((syntmp-symnames-913 (syntmp-ribcage-symnames-113 syntmp-fst-912))) (if (vector? syntmp-symnames-913) (syntmp-search-vector-rib-882 syntmp-sym-909 syntmp-subst-910 syntmp-marks-911 syntmp-symnames-913 syntmp-fst-912) (syntmp-search-list-rib-881 syntmp-sym-909 syntmp-subst-910 syntmp-marks-911 syntmp-symnames-913 syntmp-fst-912))))))))) (cond ((symbol? syntmp-id-878) (or (call-with-values (lambda () (syntmp-search-880 syntmp-id-878 (syntmp-wrap-subst-108 syntmp-w-879) (syntmp-wrap-marks-107 syntmp-w-879))) (lambda (syntmp-x-915 . syntmp-ignore-914) syntmp-x-915)) syntmp-id-878)) ((syntmp-syntax-object?-88 syntmp-id-878) (let ((syntmp-id-916 (let ((syntmp-e-918 (syntmp-syntax-object-expression-89 syntmp-id-878))) (if (annotation? syntmp-e-918) (annotation-expression syntmp-e-918) syntmp-e-918))) (syntmp-w1-917 (syntmp-syntax-object-wrap-90 syntmp-id-878))) (let ((syntmp-marks-919 (syntmp-join-marks-124 (syntmp-wrap-marks-107 syntmp-w-879) (syntmp-wrap-marks-107 syntmp-w1-917)))) (call-with-values (lambda () (syntmp-search-880 syntmp-id-916 (syntmp-wrap-subst-108 syntmp-w-879) syntmp-marks-919)) (lambda (syntmp-new-id-920 syntmp-marks-921) (or syntmp-new-id-920 (call-with-values (lambda () (syntmp-search-880 syntmp-id-916 (syntmp-wrap-subst-108 syntmp-w1-917) syntmp-marks-921)) (lambda (syntmp-x-923 . syntmp-ignore-922) syntmp-x-923)) syntmp-id-916)))))) ((annotation? syntmp-id-878) (let ((syntmp-id-924 (let ((syntmp-e-925 syntmp-id-878)) (if (annotation? syntmp-e-925) (annotation-expression syntmp-e-925) syntmp-e-925)))) (or (call-with-values (lambda () (syntmp-search-880 syntmp-id-924 (syntmp-wrap-subst-108 syntmp-w-879) (syntmp-wrap-marks-107 syntmp-w-879))) (lambda (syntmp-x-927 . syntmp-ignore-926) syntmp-x-927)) syntmp-id-924))) (else (syntmp-error-hook-78 (quote id-var-name) "invalid id" syntmp-id-878)))))) (syntmp-same-marks?-125 (lambda (syntmp-x-928 syntmp-y-929) (or (eq? syntmp-x-928 syntmp-y-929) (and (not (null? syntmp-x-928)) (not (null? syntmp-y-929)) (eq? (car syntmp-x-928) (car syntmp-y-929)) (syntmp-same-marks?-125 (cdr syntmp-x-928) (cdr syntmp-y-929)))))) (syntmp-join-marks-124 (lambda (syntmp-m1-930 syntmp-m2-931) (syntmp-smart-append-122 syntmp-m1-930 syntmp-m2-931))) (syntmp-join-wraps-123 (lambda (syntmp-w1-932 syntmp-w2-933) (let ((syntmp-m1-934 (syntmp-wrap-marks-107 syntmp-w1-932)) (syntmp-s1-935 (syntmp-wrap-subst-108 syntmp-w1-932))) (if (null? syntmp-m1-934) (if (null? syntmp-s1-935) syntmp-w2-933 (syntmp-make-wrap-106 (syntmp-wrap-marks-107 syntmp-w2-933) (syntmp-smart-append-122 syntmp-s1-935 (syntmp-wrap-subst-108 syntmp-w2-933)))) (syntmp-make-wrap-106 (syntmp-smart-append-122 syntmp-m1-934 (syntmp-wrap-marks-107 syntmp-w2-933)) (syntmp-smart-append-122 syntmp-s1-935 (syntmp-wrap-subst-108 syntmp-w2-933))))))) (syntmp-smart-append-122 (lambda (syntmp-m1-936 syntmp-m2-937) (if (null? syntmp-m2-937) syntmp-m1-936 (append syntmp-m1-936 syntmp-m2-937)))) (syntmp-make-binding-wrap-121 (lambda (syntmp-ids-938 syntmp-labels-939 syntmp-w-940) (if (null? syntmp-ids-938) syntmp-w-940 (syntmp-make-wrap-106 (syntmp-wrap-marks-107 syntmp-w-940) (cons (let ((syntmp-labelvec-941 (list->vector syntmp-labels-939))) (let ((syntmp-n-942 (vector-length syntmp-labelvec-941))) (let ((syntmp-symnamevec-943 (make-vector syntmp-n-942)) (syntmp-marksvec-944 (make-vector syntmp-n-942))) (begin (let syntmp-f-945 ((syntmp-ids-946 syntmp-ids-938) (syntmp-i-947 0)) (if (not (null? syntmp-ids-946)) (call-with-values (lambda () (syntmp-id-sym-name&marks-105 (car syntmp-ids-946) syntmp-w-940)) (lambda (syntmp-symname-948 syntmp-marks-949) (begin (vector-set! syntmp-symnamevec-943 syntmp-i-947 syntmp-symname-948) (vector-set! syntmp-marksvec-944 syntmp-i-947 syntmp-marks-949) (syntmp-f-945 (cdr syntmp-ids-946) (syntmp-fx+-72 syntmp-i-947 1))))))) (syntmp-make-ribcage-111 syntmp-symnamevec-943 syntmp-marksvec-944 syntmp-labelvec-941))))) (syntmp-wrap-subst-108 syntmp-w-940)))))) (syntmp-extend-ribcage!-120 (lambda (syntmp-ribcage-950 syntmp-id-951 syntmp-label-952) (begin (syntmp-set-ribcage-symnames!-116 syntmp-ribcage-950 (cons (let ((syntmp-e-953 (syntmp-syntax-object-expression-89 syntmp-id-951))) (if (annotation? syntmp-e-953) (annotation-expression syntmp-e-953) syntmp-e-953)) (syntmp-ribcage-symnames-113 syntmp-ribcage-950))) (syntmp-set-ribcage-marks!-117 syntmp-ribcage-950 (cons (syntmp-wrap-marks-107 (syntmp-syntax-object-wrap-90 syntmp-id-951)) (syntmp-ribcage-marks-114 syntmp-ribcage-950))) (syntmp-set-ribcage-labels!-118 syntmp-ribcage-950 (cons syntmp-label-952 (syntmp-ribcage-labels-115 syntmp-ribcage-950)))))) (syntmp-anti-mark-119 (lambda (syntmp-w-954) (syntmp-make-wrap-106 (cons #f (syntmp-wrap-marks-107 syntmp-w-954)) (cons (quote shift) (syntmp-wrap-subst-108 syntmp-w-954))))) (syntmp-set-ribcage-labels!-118 (lambda (syntmp-x-955 syntmp-update-956) (vector-set! syntmp-x-955 3 syntmp-update-956))) (syntmp-set-ribcage-marks!-117 (lambda (syntmp-x-957 syntmp-update-958) (vector-set! syntmp-x-957 2 syntmp-update-958))) (syntmp-set-ribcage-symnames!-116 (lambda (syntmp-x-959 syntmp-update-960) (vector-set! syntmp-x-959 1 syntmp-update-960))) (syntmp-ribcage-labels-115 (lambda (syntmp-x-961) (vector-ref syntmp-x-961 3))) (syntmp-ribcage-marks-114 (lambda (syntmp-x-962) (vector-ref syntmp-x-962 2))) (syntmp-ribcage-symnames-113 (lambda (syntmp-x-963) (vector-ref syntmp-x-963 1))) (syntmp-ribcage?-112 (lambda (syntmp-x-964) (and (vector? syntmp-x-964) (= (vector-length syntmp-x-964) 4) (eq? (vector-ref syntmp-x-964 0) (quote ribcage))))) (syntmp-make-ribcage-111 (lambda (syntmp-symnames-965 syntmp-marks-966 syntmp-labels-967) (vector (quote ribcage) syntmp-symnames-965 syntmp-marks-966 syntmp-labels-967))) (syntmp-gen-labels-110 (lambda (syntmp-ls-968) (if (null? syntmp-ls-968) (quote ()) (cons (syntmp-gen-label-109) (syntmp-gen-labels-110 (cdr syntmp-ls-968)))))) (syntmp-gen-label-109 (lambda () (string #\i))) (syntmp-wrap-subst-108 cdr) (syntmp-wrap-marks-107 car) (syntmp-make-wrap-106 cons) (syntmp-id-sym-name&marks-105 (lambda (syntmp-x-969 syntmp-w-970) (if (syntmp-syntax-object?-88 syntmp-x-969) (values (let ((syntmp-e-971 (syntmp-syntax-object-expression-89 syntmp-x-969))) (if (annotation? syntmp-e-971) (annotation-expression syntmp-e-971) syntmp-e-971)) (syntmp-join-marks-124 (syntmp-wrap-marks-107 syntmp-w-970) (syntmp-wrap-marks-107 (syntmp-syntax-object-wrap-90 syntmp-x-969)))) (values (let ((syntmp-e-972 syntmp-x-969)) (if (annotation? syntmp-e-972) (annotation-expression syntmp-e-972) syntmp-e-972)) (syntmp-wrap-marks-107 syntmp-w-970))))) (syntmp-id?-104 (lambda (syntmp-x-973) (cond ((symbol? syntmp-x-973) #t) ((syntmp-syntax-object?-88 syntmp-x-973) (symbol? (let ((syntmp-e-974 (syntmp-syntax-object-expression-89 syntmp-x-973))) (if (annotation? syntmp-e-974) (annotation-expression syntmp-e-974) syntmp-e-974)))) ((annotation? syntmp-x-973) (symbol? (annotation-expression syntmp-x-973))) (else #f)))) (syntmp-nonsymbol-id?-103 (lambda (syntmp-x-975) (and (syntmp-syntax-object?-88 syntmp-x-975) (symbol? (let ((syntmp-e-976 (syntmp-syntax-object-expression-89 syntmp-x-975))) (if (annotation? syntmp-e-976) (annotation-expression syntmp-e-976) syntmp-e-976)))))) (syntmp-global-extend-102 (lambda (syntmp-type-977 syntmp-sym-978 syntmp-val-979) (syntmp-put-global-definition-hook-79 syntmp-sym-978 (cons syntmp-type-977 syntmp-val-979)))) (syntmp-lookup-101 (lambda (syntmp-x-980 syntmp-r-981) (cond ((assq syntmp-x-980 syntmp-r-981) => cdr) ((symbol? syntmp-x-980) (or (syntmp-get-global-definition-hook-80 syntmp-x-980) (quote (global)))) (else (quote (displaced-lexical)))))) (syntmp-macros-only-env-100 (lambda (syntmp-r-982) (if (null? syntmp-r-982) (quote ()) (let ((syntmp-a-983 (car syntmp-r-982))) (if (eq? (cadr syntmp-a-983) (quote macro)) (cons syntmp-a-983 (syntmp-macros-only-env-100 (cdr syntmp-r-982))) (syntmp-macros-only-env-100 (cdr syntmp-r-982))))))) (syntmp-extend-var-env-99 (lambda (syntmp-labels-984 syntmp-vars-985 syntmp-r-986) (if (null? syntmp-labels-984) syntmp-r-986 (syntmp-extend-var-env-99 (cdr syntmp-labels-984) (cdr syntmp-vars-985) (cons (cons (car syntmp-labels-984) (cons (quote lexical) (car syntmp-vars-985))) syntmp-r-986))))) (syntmp-extend-env-98 (lambda (syntmp-labels-987 syntmp-bindings-988 syntmp-r-989) (if (null? syntmp-labels-987) syntmp-r-989 (syntmp-extend-env-98 (cdr syntmp-labels-987) (cdr syntmp-bindings-988) (cons (cons (car syntmp-labels-987) (car syntmp-bindings-988)) syntmp-r-989))))) (syntmp-binding-value-97 cdr) (syntmp-binding-type-96 car) (syntmp-source-annotation-95 (lambda (syntmp-x-990) (cond ((annotation? syntmp-x-990) (annotation-source syntmp-x-990)) ((syntmp-syntax-object?-88 syntmp-x-990) (syntmp-source-annotation-95 (syntmp-syntax-object-expression-89 syntmp-x-990))) (else #f)))) (syntmp-set-syntax-object-module!-94 (lambda (syntmp-x-991 syntmp-update-992) (vector-set! syntmp-x-991 3 syntmp-update-992))) (syntmp-set-syntax-object-wrap!-93 (lambda (syntmp-x-993 syntmp-update-994) (vector-set! syntmp-x-993 2 syntmp-update-994))) (syntmp-set-syntax-object-expression!-92 (lambda (syntmp-x-995 syntmp-update-996) (vector-set! syntmp-x-995 1 syntmp-update-996))) (syntmp-syntax-object-module-91 (lambda (syntmp-x-997) (vector-ref syntmp-x-997 3))) (syntmp-syntax-object-wrap-90 (lambda (syntmp-x-998) (vector-ref syntmp-x-998 2))) (syntmp-syntax-object-expression-89 (lambda (syntmp-x-999) (vector-ref syntmp-x-999 1))) (syntmp-syntax-object?-88 (lambda (syntmp-x-1000) (and (vector? syntmp-x-1000) (= (vector-length syntmp-x-1000) 4) (eq? (vector-ref syntmp-x-1000 0) (quote syntax-object))))) (syntmp-make-syntax-object-87 (lambda (syntmp-expression-1001 syntmp-wrap-1002 syntmp-module-1003) (vector (quote syntax-object) syntmp-expression-1001 syntmp-wrap-1002 syntmp-module-1003))) (syntmp-build-letrec-86 (lambda (syntmp-src-1004 syntmp-vars-1005 syntmp-val-exps-1006 syntmp-body-exp-1007) (if (null? syntmp-vars-1005) (syntmp-build-annotated-81 syntmp-src-1004 syntmp-body-exp-1007) (syntmp-build-annotated-81 syntmp-src-1004 (list (quote letrec) (map list syntmp-vars-1005 syntmp-val-exps-1006) syntmp-body-exp-1007))))) (syntmp-build-named-let-85 (lambda (syntmp-src-1008 syntmp-vars-1009 syntmp-val-exps-1010 syntmp-body-exp-1011) (if (null? syntmp-vars-1009) (syntmp-build-annotated-81 syntmp-src-1008 syntmp-body-exp-1011) (syntmp-build-annotated-81 syntmp-src-1008 (list (quote let) (car syntmp-vars-1009) (map list (cdr syntmp-vars-1009) syntmp-val-exps-1010) syntmp-body-exp-1011))))) (syntmp-build-let-84 (lambda (syntmp-src-1012 syntmp-vars-1013 syntmp-val-exps-1014 syntmp-body-exp-1015) (if (null? syntmp-vars-1013) (syntmp-build-annotated-81 syntmp-src-1012 syntmp-body-exp-1015) (syntmp-build-annotated-81 syntmp-src-1012 (list (quote let) (map list syntmp-vars-1013 syntmp-val-exps-1014) syntmp-body-exp-1015))))) (syntmp-build-sequence-83 (lambda (syntmp-src-1016 syntmp-exps-1017) (if (null? (cdr syntmp-exps-1017)) (syntmp-build-annotated-81 syntmp-src-1016 (car syntmp-exps-1017)) (syntmp-build-annotated-81 syntmp-src-1016 (cons (quote begin) syntmp-exps-1017))))) (syntmp-build-data-82 (lambda (syntmp-src-1018 syntmp-exp-1019) (if (and (self-evaluating? syntmp-exp-1019) (not (vector? syntmp-exp-1019))) (syntmp-build-annotated-81 syntmp-src-1018 syntmp-exp-1019) (syntmp-build-annotated-81 syntmp-src-1018 (list (quote quote) syntmp-exp-1019))))) (syntmp-build-annotated-81 (lambda (syntmp-src-1020 syntmp-exp-1021) (if (and syntmp-src-1020 (not (annotation? syntmp-exp-1021))) (make-annotation syntmp-exp-1021 syntmp-src-1020 #t) syntmp-exp-1021))) (syntmp-get-global-definition-hook-80 (lambda (syntmp-symbol-1022) (getprop syntmp-symbol-1022 (quote *sc-expander*)))) (syntmp-put-global-definition-hook-79 (lambda (syntmp-symbol-1023 syntmp-binding-1024) (putprop syntmp-symbol-1023 (quote *sc-expander*) syntmp-binding-1024))) (syntmp-error-hook-78 (lambda (syntmp-who-1025 syntmp-why-1026 syntmp-what-1027) (error syntmp-who-1025 "~a ~s" syntmp-why-1026 syntmp-what-1027))) (syntmp-local-eval-hook-77 (lambda (syntmp-x-1028) (eval (list syntmp-noexpand-71 syntmp-x-1028) (interaction-environment)))) (syntmp-top-level-eval-hook-76 (lambda (syntmp-x-1029) (eval (list syntmp-noexpand-71 syntmp-x-1029) (interaction-environment)))) (syntmp-fx<-75 <) (syntmp-fx=-74 =) (syntmp-fx--73 -) (syntmp-fx+-72 +) (syntmp-noexpand-71 "noexpand")) (begin (syntmp-global-extend-102 (quote local-syntax) (quote letrec-syntax) #t) (syntmp-global-extend-102 (quote local-syntax) (quote let-syntax) #f) (syntmp-global-extend-102 (quote core) (quote fluid-let-syntax) (lambda (syntmp-e-1030 syntmp-r-1031 syntmp-w-1032 syntmp-s-1033) ((lambda (syntmp-tmp-1034) ((lambda (syntmp-tmp-1035) (if (if syntmp-tmp-1035 (apply (lambda (syntmp-_-1036 syntmp-var-1037 syntmp-val-1038 syntmp-e1-1039 syntmp-e2-1040) (syntmp-valid-bound-ids?-129 syntmp-var-1037)) syntmp-tmp-1035) #f) (apply (lambda (syntmp-_-1042 syntmp-var-1043 syntmp-val-1044 syntmp-e1-1045 syntmp-e2-1046) (let ((syntmp-names-1047 (map (lambda (syntmp-x-1048) (syntmp-id-var-name-126 syntmp-x-1048 syntmp-w-1032)) syntmp-var-1043))) (begin (for-each (lambda (syntmp-id-1050 syntmp-n-1051) (let ((syntmp-t-1052 (syntmp-binding-type-96 (syntmp-lookup-101 syntmp-n-1051 syntmp-r-1031)))) (if (memv syntmp-t-1052 (quote (displaced-lexical))) (syntax-error (syntmp-source-wrap-133 syntmp-id-1050 syntmp-w-1032 syntmp-s-1033) "identifier out of context")))) syntmp-var-1043 syntmp-names-1047) (syntmp-chi-body-144 (cons syntmp-e1-1045 syntmp-e2-1046) (syntmp-source-wrap-133 syntmp-e-1030 syntmp-w-1032 syntmp-s-1033) (syntmp-extend-env-98 syntmp-names-1047 (let ((syntmp-trans-r-1055 (syntmp-macros-only-env-100 syntmp-r-1031))) (map (lambda (syntmp-x-1056) (cons (quote macro) (syntmp-eval-local-transformer-147 (syntmp-chi-140 syntmp-x-1056 syntmp-trans-r-1055 syntmp-w-1032)))) syntmp-val-1044)) syntmp-r-1031) syntmp-w-1032)))) syntmp-tmp-1035) ((lambda (syntmp-_-1058) (syntax-error (syntmp-source-wrap-133 syntmp-e-1030 syntmp-w-1032 syntmp-s-1033))) syntmp-tmp-1034))) (syntax-dispatch syntmp-tmp-1034 (quote (any #(each (any any)) any . each-any))))) syntmp-e-1030))) (syntmp-global-extend-102 (quote core) (quote quote) (lambda (syntmp-e-1059 syntmp-r-1060 syntmp-w-1061 syntmp-s-1062) ((lambda (syntmp-tmp-1063) ((lambda (syntmp-tmp-1064) (if syntmp-tmp-1064 (apply (lambda (syntmp-_-1065 syntmp-e-1066) (syntmp-build-data-82 syntmp-s-1062 (syntmp-strip-151 syntmp-e-1066 syntmp-w-1061))) syntmp-tmp-1064) ((lambda (syntmp-_-1067) (syntax-error (syntmp-source-wrap-133 syntmp-e-1059 syntmp-w-1061 syntmp-s-1062))) syntmp-tmp-1063))) (syntax-dispatch syntmp-tmp-1063 (quote (any any))))) syntmp-e-1059))) (syntmp-global-extend-102 (quote core) (quote syntax) (letrec ((syntmp-regen-1075 (lambda (syntmp-x-1076) (let ((syntmp-t-1077 (car syntmp-x-1076))) (if (memv syntmp-t-1077 (quote (ref))) (syntmp-build-annotated-81 #f (cadr syntmp-x-1076)) (if (memv syntmp-t-1077 (quote (primitive))) (syntmp-build-annotated-81 #f (cadr syntmp-x-1076)) (if (memv syntmp-t-1077 (quote (quote))) (syntmp-build-data-82 #f (cadr syntmp-x-1076)) (if (memv syntmp-t-1077 (quote (lambda))) (syntmp-build-annotated-81 #f (list (quote lambda) (cadr syntmp-x-1076) (syntmp-regen-1075 (caddr syntmp-x-1076)))) (if (memv syntmp-t-1077 (quote (map))) (let ((syntmp-ls-1078 (map syntmp-regen-1075 (cdr syntmp-x-1076)))) (syntmp-build-annotated-81 #f (cons (if (syntmp-fx=-74 (length syntmp-ls-1078) 2) (syntmp-build-annotated-81 #f (quote map)) (syntmp-build-annotated-81 #f (quote map))) syntmp-ls-1078))) (syntmp-build-annotated-81 #f (cons (syntmp-build-annotated-81 #f (car syntmp-x-1076)) (map syntmp-regen-1075 (cdr syntmp-x-1076)))))))))))) (syntmp-gen-vector-1074 (lambda (syntmp-x-1079) (cond ((eq? (car syntmp-x-1079) (quote list)) (cons (quote vector) (cdr syntmp-x-1079))) ((eq? (car syntmp-x-1079) (quote quote)) (list (quote quote) (list->vector (cadr syntmp-x-1079)))) (else (list (quote list->vector) syntmp-x-1079))))) (syntmp-gen-append-1073 (lambda (syntmp-x-1080 syntmp-y-1081) (if (equal? syntmp-y-1081 (quote (quote ()))) syntmp-x-1080 (list (quote append) syntmp-x-1080 syntmp-y-1081)))) (syntmp-gen-cons-1072 (lambda (syntmp-x-1082 syntmp-y-1083) (let ((syntmp-t-1084 (car syntmp-y-1083))) (if (memv syntmp-t-1084 (quote (quote))) (if (eq? (car syntmp-x-1082) (quote quote)) (list (quote quote) (cons (cadr syntmp-x-1082) (cadr syntmp-y-1083))) (if (eq? (cadr syntmp-y-1083) (quote ())) (list (quote list) syntmp-x-1082) (list (quote cons) syntmp-x-1082 syntmp-y-1083))) (if (memv syntmp-t-1084 (quote (list))) (cons (quote list) (cons syntmp-x-1082 (cdr syntmp-y-1083))) (list (quote cons) syntmp-x-1082 syntmp-y-1083)))))) (syntmp-gen-map-1071 (lambda (syntmp-e-1085 syntmp-map-env-1086) (let ((syntmp-formals-1087 (map cdr syntmp-map-env-1086)) (syntmp-actuals-1088 (map (lambda (syntmp-x-1089) (list (quote ref) (car syntmp-x-1089))) syntmp-map-env-1086))) (cond ((eq? (car syntmp-e-1085) (quote ref)) (car syntmp-actuals-1088)) ((andmap (lambda (syntmp-x-1090) (and (eq? (car syntmp-x-1090) (quote ref)) (memq (cadr syntmp-x-1090) syntmp-formals-1087))) (cdr syntmp-e-1085)) (cons (quote map) (cons (list (quote primitive) (car syntmp-e-1085)) (map (let ((syntmp-r-1091 (map cons syntmp-formals-1087 syntmp-actuals-1088))) (lambda (syntmp-x-1092) (cdr (assq (cadr syntmp-x-1092) syntmp-r-1091)))) (cdr syntmp-e-1085))))) (else (cons (quote map) (cons (list (quote lambda) syntmp-formals-1087 syntmp-e-1085) syntmp-actuals-1088))))))) (syntmp-gen-mappend-1070 (lambda (syntmp-e-1093 syntmp-map-env-1094) (list (quote apply) (quote (primitive append)) (syntmp-gen-map-1071 syntmp-e-1093 syntmp-map-env-1094)))) (syntmp-gen-ref-1069 (lambda (syntmp-src-1095 syntmp-var-1096 syntmp-level-1097 syntmp-maps-1098) (if (syntmp-fx=-74 syntmp-level-1097 0) (values syntmp-var-1096 syntmp-maps-1098) (if (null? syntmp-maps-1098) (syntax-error syntmp-src-1095 "missing ellipsis in syntax form") (call-with-values (lambda () (syntmp-gen-ref-1069 syntmp-src-1095 syntmp-var-1096 (syntmp-fx--73 syntmp-level-1097 1) (cdr syntmp-maps-1098))) (lambda (syntmp-outer-var-1099 syntmp-outer-maps-1100) (let ((syntmp-b-1101 (assq syntmp-outer-var-1099 (car syntmp-maps-1098)))) (if syntmp-b-1101 (values (cdr syntmp-b-1101) syntmp-maps-1098) (let ((syntmp-inner-var-1102 (syntmp-gen-var-152 (quote tmp)))) (values syntmp-inner-var-1102 (cons (cons (cons syntmp-outer-var-1099 syntmp-inner-var-1102) (car syntmp-maps-1098)) syntmp-outer-maps-1100))))))))))) (syntmp-gen-syntax-1068 (lambda (syntmp-src-1103 syntmp-e-1104 syntmp-r-1105 syntmp-maps-1106 syntmp-ellipsis?-1107) (if (syntmp-id?-104 syntmp-e-1104) (let ((syntmp-label-1108 (syntmp-id-var-name-126 syntmp-e-1104 (quote (()))))) (let ((syntmp-b-1109 (syntmp-lookup-101 syntmp-label-1108 syntmp-r-1105))) (if (eq? (syntmp-binding-type-96 syntmp-b-1109) (quote syntax)) (call-with-values (lambda () (let ((syntmp-var.lev-1110 (syntmp-binding-value-97 syntmp-b-1109))) (syntmp-gen-ref-1069 syntmp-src-1103 (car syntmp-var.lev-1110) (cdr syntmp-var.lev-1110) syntmp-maps-1106))) (lambda (syntmp-var-1111 syntmp-maps-1112) (values (list (quote ref) syntmp-var-1111) syntmp-maps-1112))) (if (syntmp-ellipsis?-1107 syntmp-e-1104) (syntax-error syntmp-src-1103 "misplaced ellipsis in syntax form") (values (list (quote quote) syntmp-e-1104) syntmp-maps-1106))))) ((lambda (syntmp-tmp-1113) ((lambda (syntmp-tmp-1114) (if (if syntmp-tmp-1114 (apply (lambda (syntmp-dots-1115 syntmp-e-1116) (syntmp-ellipsis?-1107 syntmp-dots-1115)) syntmp-tmp-1114) #f) (apply (lambda (syntmp-dots-1117 syntmp-e-1118) (syntmp-gen-syntax-1068 syntmp-src-1103 syntmp-e-1118 syntmp-r-1105 syntmp-maps-1106 (lambda (syntmp-x-1119) #f))) syntmp-tmp-1114) ((lambda (syntmp-tmp-1120) (if (if syntmp-tmp-1120 (apply (lambda (syntmp-x-1121 syntmp-dots-1122 syntmp-y-1123) (syntmp-ellipsis?-1107 syntmp-dots-1122)) syntmp-tmp-1120) #f) (apply (lambda (syntmp-x-1124 syntmp-dots-1125 syntmp-y-1126) (let syntmp-f-1127 ((syntmp-y-1128 syntmp-y-1126) (syntmp-k-1129 (lambda (syntmp-maps-1130) (call-with-values (lambda () (syntmp-gen-syntax-1068 syntmp-src-1103 syntmp-x-1124 syntmp-r-1105 (cons (quote ()) syntmp-maps-1130) syntmp-ellipsis?-1107)) (lambda (syntmp-x-1131 syntmp-maps-1132) (if (null? (car syntmp-maps-1132)) (syntax-error syntmp-src-1103 "extra ellipsis in syntax form") (values (syntmp-gen-map-1071 syntmp-x-1131 (car syntmp-maps-1132)) (cdr syntmp-maps-1132)))))))) ((lambda (syntmp-tmp-1133) ((lambda (syntmp-tmp-1134) (if (if syntmp-tmp-1134 (apply (lambda (syntmp-dots-1135 syntmp-y-1136) (syntmp-ellipsis?-1107 syntmp-dots-1135)) syntmp-tmp-1134) #f) (apply (lambda (syntmp-dots-1137 syntmp-y-1138) (syntmp-f-1127 syntmp-y-1138 (lambda (syntmp-maps-1139) (call-with-values (lambda () (syntmp-k-1129 (cons (quote ()) syntmp-maps-1139))) (lambda (syntmp-x-1140 syntmp-maps-1141) (if (null? (car syntmp-maps-1141)) (syntax-error syntmp-src-1103 "extra ellipsis in syntax form") (values (syntmp-gen-mappend-1070 syntmp-x-1140 (car syntmp-maps-1141)) (cdr syntmp-maps-1141)))))))) syntmp-tmp-1134) ((lambda (syntmp-_-1142) (call-with-values (lambda () (syntmp-gen-syntax-1068 syntmp-src-1103 syntmp-y-1128 syntmp-r-1105 syntmp-maps-1106 syntmp-ellipsis?-1107)) (lambda (syntmp-y-1143 syntmp-maps-1144) (call-with-values (lambda () (syntmp-k-1129 syntmp-maps-1144)) (lambda (syntmp-x-1145 syntmp-maps-1146) (values (syntmp-gen-append-1073 syntmp-x-1145 syntmp-y-1143) syntmp-maps-1146)))))) syntmp-tmp-1133))) (syntax-dispatch syntmp-tmp-1133 (quote (any . any))))) syntmp-y-1128))) syntmp-tmp-1120) ((lambda (syntmp-tmp-1147) (if syntmp-tmp-1147 (apply (lambda (syntmp-x-1148 syntmp-y-1149) (call-with-values (lambda () (syntmp-gen-syntax-1068 syntmp-src-1103 syntmp-x-1148 syntmp-r-1105 syntmp-maps-1106 syntmp-ellipsis?-1107)) (lambda (syntmp-x-1150 syntmp-maps-1151) (call-with-values (lambda () (syntmp-gen-syntax-1068 syntmp-src-1103 syntmp-y-1149 syntmp-r-1105 syntmp-maps-1151 syntmp-ellipsis?-1107)) (lambda (syntmp-y-1152 syntmp-maps-1153) (values (syntmp-gen-cons-1072 syntmp-x-1150 syntmp-y-1152) syntmp-maps-1153)))))) syntmp-tmp-1147) ((lambda (syntmp-tmp-1154) (if syntmp-tmp-1154 (apply (lambda (syntmp-e1-1155 syntmp-e2-1156) (call-with-values (lambda () (syntmp-gen-syntax-1068 syntmp-src-1103 (cons syntmp-e1-1155 syntmp-e2-1156) syntmp-r-1105 syntmp-maps-1106 syntmp-ellipsis?-1107)) (lambda (syntmp-e-1158 syntmp-maps-1159) (values (syntmp-gen-vector-1074 syntmp-e-1158) syntmp-maps-1159)))) syntmp-tmp-1154) ((lambda (syntmp-_-1160) (values (list (quote quote) syntmp-e-1104) syntmp-maps-1106)) syntmp-tmp-1113))) (syntax-dispatch syntmp-tmp-1113 (quote #(vector (any . each-any))))))) (syntax-dispatch syntmp-tmp-1113 (quote (any . any)))))) (syntax-dispatch syntmp-tmp-1113 (quote (any any . any)))))) (syntax-dispatch syntmp-tmp-1113 (quote (any any))))) syntmp-e-1104))))) (lambda (syntmp-e-1161 syntmp-r-1162 syntmp-w-1163 syntmp-s-1164) (let ((syntmp-e-1165 (syntmp-source-wrap-133 syntmp-e-1161 syntmp-w-1163 syntmp-s-1164))) ((lambda (syntmp-tmp-1166) ((lambda (syntmp-tmp-1167) (if syntmp-tmp-1167 (apply (lambda (syntmp-_-1168 syntmp-x-1169) (call-with-values (lambda () (syntmp-gen-syntax-1068 syntmp-e-1165 syntmp-x-1169 syntmp-r-1162 (quote ()) syntmp-ellipsis?-149)) (lambda (syntmp-e-1170 syntmp-maps-1171) (syntmp-regen-1075 syntmp-e-1170)))) syntmp-tmp-1167) ((lambda (syntmp-_-1172) (syntax-error syntmp-e-1165)) syntmp-tmp-1166))) (syntax-dispatch syntmp-tmp-1166 (quote (any any))))) syntmp-e-1165))))) (syntmp-global-extend-102 (quote core) (quote lambda) (lambda (syntmp-e-1173 syntmp-r-1174 syntmp-w-1175 syntmp-s-1176) ((lambda (syntmp-tmp-1177) ((lambda (syntmp-tmp-1178) (if syntmp-tmp-1178 (apply (lambda (syntmp-_-1179 syntmp-c-1180) (syntmp-chi-lambda-clause-145 (syntmp-source-wrap-133 syntmp-e-1173 syntmp-w-1175 syntmp-s-1176) syntmp-c-1180 syntmp-r-1174 syntmp-w-1175 (lambda (syntmp-vars-1181 syntmp-body-1182) (syntmp-build-annotated-81 syntmp-s-1176 (list (quote lambda) syntmp-vars-1181 syntmp-body-1182))))) syntmp-tmp-1178) (syntax-error syntmp-tmp-1177))) (syntax-dispatch syntmp-tmp-1177 (quote (any . any))))) syntmp-e-1173))) (syntmp-global-extend-102 (quote core) (quote let) (letrec ((syntmp-chi-let-1183 (lambda (syntmp-e-1184 syntmp-r-1185 syntmp-w-1186 syntmp-s-1187 syntmp-constructor-1188 syntmp-ids-1189 syntmp-vals-1190 syntmp-exps-1191) (if (not (syntmp-valid-bound-ids?-129 syntmp-ids-1189)) (syntax-error syntmp-e-1184 "duplicate bound variable in") (let ((syntmp-labels-1192 (syntmp-gen-labels-110 syntmp-ids-1189)) (syntmp-new-vars-1193 (map syntmp-gen-var-152 syntmp-ids-1189))) (let ((syntmp-nw-1194 (syntmp-make-binding-wrap-121 syntmp-ids-1189 syntmp-labels-1192 syntmp-w-1186)) (syntmp-nr-1195 (syntmp-extend-var-env-99 syntmp-labels-1192 syntmp-new-vars-1193 syntmp-r-1185))) (syntmp-constructor-1188 syntmp-s-1187 syntmp-new-vars-1193 (map (lambda (syntmp-x-1196) (syntmp-chi-140 syntmp-x-1196 syntmp-r-1185 syntmp-w-1186)) syntmp-vals-1190) (syntmp-chi-body-144 syntmp-exps-1191 (syntmp-source-wrap-133 syntmp-e-1184 syntmp-nw-1194 syntmp-s-1187) syntmp-nr-1195 syntmp-nw-1194)))))))) (lambda (syntmp-e-1197 syntmp-r-1198 syntmp-w-1199 syntmp-s-1200) ((lambda (syntmp-tmp-1201) ((lambda (syntmp-tmp-1202) (if syntmp-tmp-1202 (apply (lambda (syntmp-_-1203 syntmp-id-1204 syntmp-val-1205 syntmp-e1-1206 syntmp-e2-1207) (syntmp-chi-let-1183 syntmp-e-1197 syntmp-r-1198 syntmp-w-1199 syntmp-s-1200 syntmp-build-let-84 syntmp-id-1204 syntmp-val-1205 (cons syntmp-e1-1206 syntmp-e2-1207))) syntmp-tmp-1202) ((lambda (syntmp-tmp-1211) (if (if syntmp-tmp-1211 (apply (lambda (syntmp-_-1212 syntmp-f-1213 syntmp-id-1214 syntmp-val-1215 syntmp-e1-1216 syntmp-e2-1217) (syntmp-id?-104 syntmp-f-1213)) syntmp-tmp-1211) #f) (apply (lambda (syntmp-_-1218 syntmp-f-1219 syntmp-id-1220 syntmp-val-1221 syntmp-e1-1222 syntmp-e2-1223) (syntmp-chi-let-1183 syntmp-e-1197 syntmp-r-1198 syntmp-w-1199 syntmp-s-1200 syntmp-build-named-let-85 (cons syntmp-f-1219 syntmp-id-1220) syntmp-val-1221 (cons syntmp-e1-1222 syntmp-e2-1223))) syntmp-tmp-1211) ((lambda (syntmp-_-1227) (syntax-error (syntmp-source-wrap-133 syntmp-e-1197 syntmp-w-1199 syntmp-s-1200))) syntmp-tmp-1201))) (syntax-dispatch syntmp-tmp-1201 (quote (any any #(each (any any)) any . each-any)))))) (syntax-dispatch syntmp-tmp-1201 (quote (any #(each (any any)) any . each-any))))) syntmp-e-1197)))) (syntmp-global-extend-102 (quote core) (quote letrec) (lambda (syntmp-e-1228 syntmp-r-1229 syntmp-w-1230 syntmp-s-1231) ((lambda (syntmp-tmp-1232) ((lambda (syntmp-tmp-1233) (if syntmp-tmp-1233 (apply (lambda (syntmp-_-1234 syntmp-id-1235 syntmp-val-1236 syntmp-e1-1237 syntmp-e2-1238) (let ((syntmp-ids-1239 syntmp-id-1235)) (if (not (syntmp-valid-bound-ids?-129 syntmp-ids-1239)) (syntax-error syntmp-e-1228 "duplicate bound variable in") (let ((syntmp-labels-1241 (syntmp-gen-labels-110 syntmp-ids-1239)) (syntmp-new-vars-1242 (map syntmp-gen-var-152 syntmp-ids-1239))) (let ((syntmp-w-1243 (syntmp-make-binding-wrap-121 syntmp-ids-1239 syntmp-labels-1241 syntmp-w-1230)) (syntmp-r-1244 (syntmp-extend-var-env-99 syntmp-labels-1241 syntmp-new-vars-1242 syntmp-r-1229))) (syntmp-build-letrec-86 syntmp-s-1231 syntmp-new-vars-1242 (map (lambda (syntmp-x-1245) (syntmp-chi-140 syntmp-x-1245 syntmp-r-1244 syntmp-w-1243)) syntmp-val-1236) (syntmp-chi-body-144 (cons syntmp-e1-1237 syntmp-e2-1238) (syntmp-source-wrap-133 syntmp-e-1228 syntmp-w-1243 syntmp-s-1231) syntmp-r-1244 syntmp-w-1243))))))) syntmp-tmp-1233) ((lambda (syntmp-_-1248) (syntax-error (syntmp-source-wrap-133 syntmp-e-1228 syntmp-w-1230 syntmp-s-1231))) syntmp-tmp-1232))) (syntax-dispatch syntmp-tmp-1232 (quote (any #(each (any any)) any . each-any))))) syntmp-e-1228))) (syntmp-global-extend-102 (quote core) (quote set!) (lambda (syntmp-e-1249 syntmp-r-1250 syntmp-w-1251 syntmp-s-1252) ((lambda (syntmp-tmp-1253) ((lambda (syntmp-tmp-1254) (if (if syntmp-tmp-1254 (apply (lambda (syntmp-_-1255 syntmp-id-1256 syntmp-val-1257) (syntmp-id?-104 syntmp-id-1256)) syntmp-tmp-1254) #f) (apply (lambda (syntmp-_-1258 syntmp-id-1259 syntmp-val-1260) (let ((syntmp-val-1261 (syntmp-chi-140 syntmp-val-1260 syntmp-r-1250 syntmp-w-1251)) (syntmp-n-1262 (syntmp-id-var-name-126 syntmp-id-1259 syntmp-w-1251))) (let ((syntmp-b-1263 (syntmp-lookup-101 syntmp-n-1262 syntmp-r-1250))) (let ((syntmp-t-1264 (syntmp-binding-type-96 syntmp-b-1263))) (if (memv syntmp-t-1264 (quote (lexical))) (syntmp-build-annotated-81 syntmp-s-1252 (list (quote set!) (syntmp-binding-value-97 syntmp-b-1263) syntmp-val-1261)) (if (memv syntmp-t-1264 (quote (global))) (syntmp-build-annotated-81 syntmp-s-1252 (list (quote set!) (make-module-ref #f syntmp-n-1262 #f) syntmp-val-1261)) (if (memv syntmp-t-1264 (quote (displaced-lexical))) (syntax-error (syntmp-wrap-132 syntmp-id-1259 syntmp-w-1251) "identifier out of context") (syntax-error (syntmp-source-wrap-133 syntmp-e-1249 syntmp-w-1251 syntmp-s-1252))))))))) syntmp-tmp-1254) ((lambda (syntmp-tmp-1265) (if syntmp-tmp-1265 (apply (lambda (syntmp-_-1266 syntmp-getter-1267 syntmp-arg-1268 syntmp-val-1269) (syntmp-build-annotated-81 syntmp-s-1252 (cons (syntmp-chi-140 (list (quote #(syntax-object setter ((top) #(ribcage #(_ getter arg val) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(e r w s) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f)) syntmp-getter-1267) syntmp-r-1250 syntmp-w-1251) (map (lambda (syntmp-e-1270) (syntmp-chi-140 syntmp-e-1270 syntmp-r-1250 syntmp-w-1251)) (append syntmp-arg-1268 (list syntmp-val-1269)))))) syntmp-tmp-1265) ((lambda (syntmp-_-1272) (syntax-error (syntmp-source-wrap-133 syntmp-e-1249 syntmp-w-1251 syntmp-s-1252))) syntmp-tmp-1253))) (syntax-dispatch syntmp-tmp-1253 (quote (any (any . each-any) any)))))) (syntax-dispatch syntmp-tmp-1253 (quote (any any any))))) syntmp-e-1249))) (syntmp-global-extend-102 (quote begin) (quote begin) (quote ())) (syntmp-global-extend-102 (quote define) (quote define) (quote ())) (syntmp-global-extend-102 (quote define-syntax) (quote define-syntax) (quote ())) (syntmp-global-extend-102 (quote eval-when) (quote eval-when) (quote ())) (syntmp-global-extend-102 (quote core) (quote syntax-case) (letrec ((syntmp-gen-syntax-case-1276 (lambda (syntmp-x-1277 syntmp-keys-1278 syntmp-clauses-1279 syntmp-r-1280) (if (null? syntmp-clauses-1279) (syntmp-build-annotated-81 #f (list (syntmp-build-annotated-81 #f (quote syntax-error)) syntmp-x-1277)) ((lambda (syntmp-tmp-1281) ((lambda (syntmp-tmp-1282) (if syntmp-tmp-1282 (apply (lambda (syntmp-pat-1283 syntmp-exp-1284) (if (and (syntmp-id?-104 syntmp-pat-1283) (andmap (lambda (syntmp-x-1285) (not (syntmp-free-id=?-127 syntmp-pat-1283 syntmp-x-1285))) (cons (quote #(syntax-object ... ((top) #(ribcage #(pat exp) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x keys clauses r) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage (gen-syntax-case gen-clause build-dispatch-call convert-pattern) ((top) (top) (top) (top)) ("i" "i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f)) syntmp-keys-1278))) (let ((syntmp-labels-1286 (list (syntmp-gen-label-109))) (syntmp-var-1287 (syntmp-gen-var-152 syntmp-pat-1283))) (syntmp-build-annotated-81 #f (list (syntmp-build-annotated-81 #f (list (quote lambda) (list syntmp-var-1287) (syntmp-chi-140 syntmp-exp-1284 (syntmp-extend-env-98 syntmp-labels-1286 (list (cons (quote syntax) (cons syntmp-var-1287 0))) syntmp-r-1280) (syntmp-make-binding-wrap-121 (list syntmp-pat-1283) syntmp-labels-1286 (quote (())))))) syntmp-x-1277))) (syntmp-gen-clause-1275 syntmp-x-1277 syntmp-keys-1278 (cdr syntmp-clauses-1279) syntmp-r-1280 syntmp-pat-1283 #t syntmp-exp-1284))) syntmp-tmp-1282) ((lambda (syntmp-tmp-1288) (if syntmp-tmp-1288 (apply (lambda (syntmp-pat-1289 syntmp-fender-1290 syntmp-exp-1291) (syntmp-gen-clause-1275 syntmp-x-1277 syntmp-keys-1278 (cdr syntmp-clauses-1279) syntmp-r-1280 syntmp-pat-1289 syntmp-fender-1290 syntmp-exp-1291)) syntmp-tmp-1288) ((lambda (syntmp-_-1292) (syntax-error (car syntmp-clauses-1279) "invalid syntax-case clause")) syntmp-tmp-1281))) (syntax-dispatch syntmp-tmp-1281 (quote (any any any)))))) (syntax-dispatch syntmp-tmp-1281 (quote (any any))))) (car syntmp-clauses-1279))))) (syntmp-gen-clause-1275 (lambda (syntmp-x-1293 syntmp-keys-1294 syntmp-clauses-1295 syntmp-r-1296 syntmp-pat-1297 syntmp-fender-1298 syntmp-exp-1299) (call-with-values (lambda () (syntmp-convert-pattern-1273 syntmp-pat-1297 syntmp-keys-1294)) (lambda (syntmp-p-1300 syntmp-pvars-1301) (cond ((not (syntmp-distinct-bound-ids?-130 (map car syntmp-pvars-1301))) (syntax-error syntmp-pat-1297 "duplicate pattern variable in syntax-case pattern")) ((not (andmap (lambda (syntmp-x-1302) (not (syntmp-ellipsis?-149 (car syntmp-x-1302)))) syntmp-pvars-1301)) (syntax-error syntmp-pat-1297 "misplaced ellipsis in syntax-case pattern")) (else (let ((syntmp-y-1303 (syntmp-gen-var-152 (quote tmp)))) (syntmp-build-annotated-81 #f (list (syntmp-build-annotated-81 #f (list (quote lambda) (list syntmp-y-1303) (let ((syntmp-y-1304 (syntmp-build-annotated-81 #f syntmp-y-1303))) (syntmp-build-annotated-81 #f (list (quote if) ((lambda (syntmp-tmp-1305) ((lambda (syntmp-tmp-1306) (if syntmp-tmp-1306 (apply (lambda () syntmp-y-1304) syntmp-tmp-1306) ((lambda (syntmp-_-1307) (syntmp-build-annotated-81 #f (list (quote if) syntmp-y-1304 (syntmp-build-dispatch-call-1274 syntmp-pvars-1301 syntmp-fender-1298 syntmp-y-1304 syntmp-r-1296) (syntmp-build-data-82 #f #f)))) syntmp-tmp-1305))) (syntax-dispatch syntmp-tmp-1305 (quote #(atom #t))))) syntmp-fender-1298) (syntmp-build-dispatch-call-1274 syntmp-pvars-1301 syntmp-exp-1299 syntmp-y-1304 syntmp-r-1296) (syntmp-gen-syntax-case-1276 syntmp-x-1293 syntmp-keys-1294 syntmp-clauses-1295 syntmp-r-1296)))))) (if (eq? syntmp-p-1300 (quote any)) (syntmp-build-annotated-81 #f (list (syntmp-build-annotated-81 #f (quote list)) syntmp-x-1293)) (syntmp-build-annotated-81 #f (list (syntmp-build-annotated-81 #f (quote syntax-dispatch)) syntmp-x-1293 (syntmp-build-data-82 #f syntmp-p-1300))))))))))))) (syntmp-build-dispatch-call-1274 (lambda (syntmp-pvars-1308 syntmp-exp-1309 syntmp-y-1310 syntmp-r-1311) (let ((syntmp-ids-1312 (map car syntmp-pvars-1308)) (syntmp-levels-1313 (map cdr syntmp-pvars-1308))) (let ((syntmp-labels-1314 (syntmp-gen-labels-110 syntmp-ids-1312)) (syntmp-new-vars-1315 (map syntmp-gen-var-152 syntmp-ids-1312))) (syntmp-build-annotated-81 #f (list (syntmp-build-annotated-81 #f (quote apply)) (syntmp-build-annotated-81 #f (list (quote lambda) syntmp-new-vars-1315 (syntmp-chi-140 syntmp-exp-1309 (syntmp-extend-env-98 syntmp-labels-1314 (map (lambda (syntmp-var-1316 syntmp-level-1317) (cons (quote syntax) (cons syntmp-var-1316 syntmp-level-1317))) syntmp-new-vars-1315 (map cdr syntmp-pvars-1308)) syntmp-r-1311) (syntmp-make-binding-wrap-121 syntmp-ids-1312 syntmp-labels-1314 (quote (())))))) syntmp-y-1310)))))) (syntmp-convert-pattern-1273 (lambda (syntmp-pattern-1318 syntmp-keys-1319) (let syntmp-cvt-1320 ((syntmp-p-1321 syntmp-pattern-1318) (syntmp-n-1322 0) (syntmp-ids-1323 (quote ()))) (if (syntmp-id?-104 syntmp-p-1321) (if (syntmp-bound-id-member?-131 syntmp-p-1321 syntmp-keys-1319) (values (vector (quote free-id) syntmp-p-1321) syntmp-ids-1323) (values (quote any) (cons (cons syntmp-p-1321 syntmp-n-1322) syntmp-ids-1323))) ((lambda (syntmp-tmp-1324) ((lambda (syntmp-tmp-1325) (if (if syntmp-tmp-1325 (apply (lambda (syntmp-x-1326 syntmp-dots-1327) (syntmp-ellipsis?-149 syntmp-dots-1327)) syntmp-tmp-1325) #f) (apply (lambda (syntmp-x-1328 syntmp-dots-1329) (call-with-values (lambda () (syntmp-cvt-1320 syntmp-x-1328 (syntmp-fx+-72 syntmp-n-1322 1) syntmp-ids-1323)) (lambda (syntmp-p-1330 syntmp-ids-1331) (values (if (eq? syntmp-p-1330 (quote any)) (quote each-any) (vector (quote each) syntmp-p-1330)) syntmp-ids-1331)))) syntmp-tmp-1325) ((lambda (syntmp-tmp-1332) (if syntmp-tmp-1332 (apply (lambda (syntmp-x-1333 syntmp-y-1334) (call-with-values (lambda () (syntmp-cvt-1320 syntmp-y-1334 syntmp-n-1322 syntmp-ids-1323)) (lambda (syntmp-y-1335 syntmp-ids-1336) (call-with-values (lambda () (syntmp-cvt-1320 syntmp-x-1333 syntmp-n-1322 syntmp-ids-1336)) (lambda (syntmp-x-1337 syntmp-ids-1338) (values (cons syntmp-x-1337 syntmp-y-1335) syntmp-ids-1338)))))) syntmp-tmp-1332) ((lambda (syntmp-tmp-1339) (if syntmp-tmp-1339 (apply (lambda () (values (quote ()) syntmp-ids-1323)) syntmp-tmp-1339) ((lambda (syntmp-tmp-1340) (if syntmp-tmp-1340 (apply (lambda (syntmp-x-1341) (call-with-values (lambda () (syntmp-cvt-1320 syntmp-x-1341 syntmp-n-1322 syntmp-ids-1323)) (lambda (syntmp-p-1343 syntmp-ids-1344) (values (vector (quote vector) syntmp-p-1343) syntmp-ids-1344)))) syntmp-tmp-1340) ((lambda (syntmp-x-1345) (values (vector (quote atom) (syntmp-strip-151 syntmp-p-1321 (quote (())))) syntmp-ids-1323)) syntmp-tmp-1324))) (syntax-dispatch syntmp-tmp-1324 (quote #(vector each-any)))))) (syntax-dispatch syntmp-tmp-1324 (quote ()))))) (syntax-dispatch syntmp-tmp-1324 (quote (any . any)))))) (syntax-dispatch syntmp-tmp-1324 (quote (any any))))) syntmp-p-1321)))))) (lambda (syntmp-e-1346 syntmp-r-1347 syntmp-w-1348 syntmp-s-1349) (let ((syntmp-e-1350 (syntmp-source-wrap-133 syntmp-e-1346 syntmp-w-1348 syntmp-s-1349))) ((lambda (syntmp-tmp-1351) ((lambda (syntmp-tmp-1352) (if syntmp-tmp-1352 (apply (lambda (syntmp-_-1353 syntmp-val-1354 syntmp-key-1355 syntmp-m-1356) (if (andmap (lambda (syntmp-x-1357) (and (syntmp-id?-104 syntmp-x-1357) (not (syntmp-ellipsis?-149 syntmp-x-1357)))) syntmp-key-1355) (let ((syntmp-x-1359 (syntmp-gen-var-152 (quote tmp)))) (syntmp-build-annotated-81 syntmp-s-1349 (list (syntmp-build-annotated-81 #f (list (quote lambda) (list syntmp-x-1359) (syntmp-gen-syntax-case-1276 (syntmp-build-annotated-81 #f syntmp-x-1359) syntmp-key-1355 syntmp-m-1356 syntmp-r-1347))) (syntmp-chi-140 syntmp-val-1354 syntmp-r-1347 (quote (())))))) (syntax-error syntmp-e-1350 "invalid literals list in"))) syntmp-tmp-1352) (syntax-error syntmp-tmp-1351))) (syntax-dispatch syntmp-tmp-1351 (quote (any any each-any . each-any))))) syntmp-e-1350))))) (set! sc-expand (let ((syntmp-m-1362 (quote e)) (syntmp-esew-1363 (quote (eval)))) (lambda (syntmp-x-1364) (if (and (pair? syntmp-x-1364) (equal? (car syntmp-x-1364) syntmp-noexpand-71)) (cadr syntmp-x-1364) (syntmp-chi-top-139 syntmp-x-1364 (quote ()) (quote ((top))) syntmp-m-1362 syntmp-esew-1363))))) (set! sc-expand3 (let ((syntmp-m-1365 (quote e)) (syntmp-esew-1366 (quote (eval)))) (lambda (syntmp-x-1368 . syntmp-rest-1367) (if (and (pair? syntmp-x-1368) (equal? (car syntmp-x-1368) syntmp-noexpand-71)) (cadr syntmp-x-1368) (syntmp-chi-top-139 syntmp-x-1368 (quote ()) (quote ((top))) (if (null? syntmp-rest-1367) syntmp-m-1365 (car syntmp-rest-1367)) (if (or (null? syntmp-rest-1367) (null? (cdr syntmp-rest-1367))) syntmp-esew-1366 (cadr syntmp-rest-1367))))))) (set! identifier? (lambda (syntmp-x-1369) (syntmp-nonsymbol-id?-103 syntmp-x-1369))) (set! datum->syntax-object (lambda (syntmp-id-1370 syntmp-datum-1371) (syntmp-make-syntax-object-87 syntmp-datum-1371 (syntmp-syntax-object-wrap-90 syntmp-id-1370) #f))) (set! syntax-object->datum (lambda (syntmp-x-1372) (syntmp-strip-151 syntmp-x-1372 (quote (()))))) (set! generate-temporaries (lambda (syntmp-ls-1373) (begin (let ((syntmp-x-1374 syntmp-ls-1373)) (if (not (list? syntmp-x-1374)) (syntmp-error-hook-78 (quote generate-temporaries) "invalid argument" syntmp-x-1374))) (map (lambda (syntmp-x-1375) (syntmp-wrap-132 (gensym) (quote ((top))))) syntmp-ls-1373)))) (set! free-identifier=? (lambda (syntmp-x-1376 syntmp-y-1377) (begin (let ((syntmp-x-1378 syntmp-x-1376)) (if (not (syntmp-nonsymbol-id?-103 syntmp-x-1378)) (syntmp-error-hook-78 (quote free-identifier=?) "invalid argument" syntmp-x-1378))) (let ((syntmp-x-1379 syntmp-y-1377)) (if (not (syntmp-nonsymbol-id?-103 syntmp-x-1379)) (syntmp-error-hook-78 (quote free-identifier=?) "invalid argument" syntmp-x-1379))) (syntmp-free-id=?-127 syntmp-x-1376 syntmp-y-1377)))) (set! bound-identifier=? (lambda (syntmp-x-1380 syntmp-y-1381) (begin (let ((syntmp-x-1382 syntmp-x-1380)) (if (not (syntmp-nonsymbol-id?-103 syntmp-x-1382)) (syntmp-error-hook-78 (quote bound-identifier=?) "invalid argument" syntmp-x-1382))) (let ((syntmp-x-1383 syntmp-y-1381)) (if (not (syntmp-nonsymbol-id?-103 syntmp-x-1383)) (syntmp-error-hook-78 (quote bound-identifier=?) "invalid argument" syntmp-x-1383))) (syntmp-bound-id=?-128 syntmp-x-1380 syntmp-y-1381)))) (set! syntax-error (lambda (syntmp-object-1385 . syntmp-messages-1384) (begin (for-each (lambda (syntmp-x-1386) (let ((syntmp-x-1387 syntmp-x-1386)) (if (not (string? syntmp-x-1387)) (syntmp-error-hook-78 (quote syntax-error) "invalid argument" syntmp-x-1387)))) syntmp-messages-1384) (let ((syntmp-message-1388 (if (null? syntmp-messages-1384) "invalid syntax" (apply string-append syntmp-messages-1384)))) (syntmp-error-hook-78 #f syntmp-message-1388 (syntmp-strip-151 syntmp-object-1385 (quote (())))))))) (set! install-global-transformer (lambda (syntmp-sym-1389 syntmp-v-1390) (begin (let ((syntmp-x-1391 syntmp-sym-1389)) (if (not (symbol? syntmp-x-1391)) (syntmp-error-hook-78 (quote define-syntax) "invalid argument" syntmp-x-1391))) (let ((syntmp-x-1392 syntmp-v-1390)) (if (not (procedure? syntmp-x-1392)) (syntmp-error-hook-78 (quote define-syntax) "invalid argument" syntmp-x-1392))) (syntmp-global-extend-102 (quote macro) syntmp-sym-1389 syntmp-v-1390)))) (letrec ((syntmp-match-1397 (lambda (syntmp-e-1398 syntmp-p-1399 syntmp-w-1400 syntmp-r-1401) (cond ((not syntmp-r-1401) #f) ((eq? syntmp-p-1399 (quote any)) (cons (syntmp-wrap-132 syntmp-e-1398 syntmp-w-1400) syntmp-r-1401)) ((syntmp-syntax-object?-88 syntmp-e-1398) (syntmp-match*-1396 (let ((syntmp-e-1402 (syntmp-syntax-object-expression-89 syntmp-e-1398))) (if (annotation? syntmp-e-1402) (annotation-expression syntmp-e-1402) syntmp-e-1402)) syntmp-p-1399 (syntmp-join-wraps-123 syntmp-w-1400 (syntmp-syntax-object-wrap-90 syntmp-e-1398)) syntmp-r-1401)) (else (syntmp-match*-1396 (let ((syntmp-e-1403 syntmp-e-1398)) (if (annotation? syntmp-e-1403) (annotation-expression syntmp-e-1403) syntmp-e-1403)) syntmp-p-1399 syntmp-w-1400 syntmp-r-1401))))) (syntmp-match*-1396 (lambda (syntmp-e-1404 syntmp-p-1405 syntmp-w-1406 syntmp-r-1407) (cond ((null? syntmp-p-1405) (and (null? syntmp-e-1404) syntmp-r-1407)) ((pair? syntmp-p-1405) (and (pair? syntmp-e-1404) (syntmp-match-1397 (car syntmp-e-1404) (car syntmp-p-1405) syntmp-w-1406 (syntmp-match-1397 (cdr syntmp-e-1404) (cdr syntmp-p-1405) syntmp-w-1406 syntmp-r-1407)))) ((eq? syntmp-p-1405 (quote each-any)) (let ((syntmp-l-1408 (syntmp-match-each-any-1394 syntmp-e-1404 syntmp-w-1406))) (and syntmp-l-1408 (cons syntmp-l-1408 syntmp-r-1407)))) (else (let ((syntmp-t-1409 (vector-ref syntmp-p-1405 0))) (if (memv syntmp-t-1409 (quote (each))) (if (null? syntmp-e-1404) (syntmp-match-empty-1395 (vector-ref syntmp-p-1405 1) syntmp-r-1407) (let ((syntmp-l-1410 (syntmp-match-each-1393 syntmp-e-1404 (vector-ref syntmp-p-1405 1) syntmp-w-1406))) (and syntmp-l-1410 (let syntmp-collect-1411 ((syntmp-l-1412 syntmp-l-1410)) (if (null? (car syntmp-l-1412)) syntmp-r-1407 (cons (map car syntmp-l-1412) (syntmp-collect-1411 (map cdr syntmp-l-1412)))))))) (if (memv syntmp-t-1409 (quote (free-id))) (and (syntmp-id?-104 syntmp-e-1404) (syntmp-free-id=?-127 (syntmp-wrap-132 syntmp-e-1404 syntmp-w-1406) (vector-ref syntmp-p-1405 1)) syntmp-r-1407) (if (memv syntmp-t-1409 (quote (atom))) (and (equal? (vector-ref syntmp-p-1405 1) (syntmp-strip-151 syntmp-e-1404 syntmp-w-1406)) syntmp-r-1407) (if (memv syntmp-t-1409 (quote (vector))) (and (vector? syntmp-e-1404) (syntmp-match-1397 (vector->list syntmp-e-1404) (vector-ref syntmp-p-1405 1) syntmp-w-1406 syntmp-r-1407))))))))))) (syntmp-match-empty-1395 (lambda (syntmp-p-1413 syntmp-r-1414) (cond ((null? syntmp-p-1413) syntmp-r-1414) ((eq? syntmp-p-1413 (quote any)) (cons (quote ()) syntmp-r-1414)) ((pair? syntmp-p-1413) (syntmp-match-empty-1395 (car syntmp-p-1413) (syntmp-match-empty-1395 (cdr syntmp-p-1413) syntmp-r-1414))) ((eq? syntmp-p-1413 (quote each-any)) (cons (quote ()) syntmp-r-1414)) (else (let ((syntmp-t-1415 (vector-ref syntmp-p-1413 0))) (if (memv syntmp-t-1415 (quote (each))) (syntmp-match-empty-1395 (vector-ref syntmp-p-1413 1) syntmp-r-1414) (if (memv syntmp-t-1415 (quote (free-id atom))) syntmp-r-1414 (if (memv syntmp-t-1415 (quote (vector))) (syntmp-match-empty-1395 (vector-ref syntmp-p-1413 1) syntmp-r-1414))))))))) (syntmp-match-each-any-1394 (lambda (syntmp-e-1416 syntmp-w-1417) (cond ((annotation? syntmp-e-1416) (syntmp-match-each-any-1394 (annotation-expression syntmp-e-1416) syntmp-w-1417)) ((pair? syntmp-e-1416) (let ((syntmp-l-1418 (syntmp-match-each-any-1394 (cdr syntmp-e-1416) syntmp-w-1417))) (and syntmp-l-1418 (cons (syntmp-wrap-132 (car syntmp-e-1416) syntmp-w-1417) syntmp-l-1418)))) ((null? syntmp-e-1416) (quote ())) ((syntmp-syntax-object?-88 syntmp-e-1416) (syntmp-match-each-any-1394 (syntmp-syntax-object-expression-89 syntmp-e-1416) (syntmp-join-wraps-123 syntmp-w-1417 (syntmp-syntax-object-wrap-90 syntmp-e-1416)))) (else #f)))) (syntmp-match-each-1393 (lambda (syntmp-e-1419 syntmp-p-1420 syntmp-w-1421) (cond ((annotation? syntmp-e-1419) (syntmp-match-each-1393 (annotation-expression syntmp-e-1419) syntmp-p-1420 syntmp-w-1421)) ((pair? syntmp-e-1419) (let ((syntmp-first-1422 (syntmp-match-1397 (car syntmp-e-1419) syntmp-p-1420 syntmp-w-1421 (quote ())))) (and syntmp-first-1422 (let ((syntmp-rest-1423 (syntmp-match-each-1393 (cdr syntmp-e-1419) syntmp-p-1420 syntmp-w-1421))) (and syntmp-rest-1423 (cons syntmp-first-1422 syntmp-rest-1423)))))) ((null? syntmp-e-1419) (quote ())) ((syntmp-syntax-object?-88 syntmp-e-1419) (syntmp-match-each-1393 (syntmp-syntax-object-expression-89 syntmp-e-1419) syntmp-p-1420 (syntmp-join-wraps-123 syntmp-w-1421 (syntmp-syntax-object-wrap-90 syntmp-e-1419)))) (else #f))))) (begin (set! syntax-dispatch (lambda (syntmp-e-1424 syntmp-p-1425) (cond ((eq? syntmp-p-1425 (quote any)) (list syntmp-e-1424)) ((syntmp-syntax-object?-88 syntmp-e-1424) (syntmp-match*-1396 (let ((syntmp-e-1426 (syntmp-syntax-object-expression-89 syntmp-e-1424))) (if (annotation? syntmp-e-1426) (annotation-expression syntmp-e-1426) syntmp-e-1426)) syntmp-p-1425 (syntmp-syntax-object-wrap-90 syntmp-e-1424) (quote ()))) (else (syntmp-match*-1396 (let ((syntmp-e-1427 syntmp-e-1424)) (if (annotation? syntmp-e-1427) (annotation-expression syntmp-e-1427) syntmp-e-1427)) syntmp-p-1425 (quote (())) (quote ())))))) (set! sc-chi syntmp-chi-140)))))
-(install-global-transformer (quote with-syntax) (lambda (syntmp-x-1428) ((lambda (syntmp-tmp-1429) ((lambda (syntmp-tmp-1430) (if syntmp-tmp-1430 (apply (lambda (syntmp-_-1431 syntmp-e1-1432 syntmp-e2-1433) (cons (quote #(syntax-object begin ((top) #(ribcage #(_ e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1432 syntmp-e2-1433))) syntmp-tmp-1430) ((lambda (syntmp-tmp-1435) (if syntmp-tmp-1435 (apply (lambda (syntmp-_-1436 syntmp-out-1437 syntmp-in-1438 syntmp-e1-1439 syntmp-e2-1440) (list (quote #(syntax-object syntax-case ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-in-1438 (quote ()) (list syntmp-out-1437 (cons (quote #(syntax-object begin ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1439 syntmp-e2-1440))))) syntmp-tmp-1435) ((lambda (syntmp-tmp-1442) (if syntmp-tmp-1442 (apply (lambda (syntmp-_-1443 syntmp-out-1444 syntmp-in-1445 syntmp-e1-1446 syntmp-e2-1447) (list (quote #(syntax-object syntax-case ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons (quote #(syntax-object list ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-in-1445) (quote ()) (list syntmp-out-1444 (cons (quote #(syntax-object begin ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1446 syntmp-e2-1447))))) syntmp-tmp-1442) (syntax-error syntmp-tmp-1429))) (syntax-dispatch syntmp-tmp-1429 (quote (any #(each (any any)) any . each-any)))))) (syntax-dispatch syntmp-tmp-1429 (quote (any ((any any)) any . each-any)))))) (syntax-dispatch syntmp-tmp-1429 (quote (any () any . each-any))))) syntmp-x-1428)))
-(install-global-transformer (quote syntax-rules) (lambda (syntmp-x-1469) ((lambda (syntmp-tmp-1470) ((lambda (syntmp-tmp-1471) (if syntmp-tmp-1471 (apply (lambda (syntmp-_-1472 syntmp-k-1473 syntmp-keyword-1474 syntmp-pattern-1475 syntmp-template-1476) (list (quote #(syntax-object lambda ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote (#(syntax-object x ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f))) (cons (quote #(syntax-object syntax-case ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons (quote #(syntax-object x ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-k-1473 (map (lambda (syntmp-tmp-1479 syntmp-tmp-1478) (list (cons (quote #(syntax-object dummy ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-tmp-1478) (list (quote #(syntax-object syntax ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-tmp-1479))) syntmp-template-1476 syntmp-pattern-1475)))))) syntmp-tmp-1471) (syntax-error syntmp-tmp-1470))) (syntax-dispatch syntmp-tmp-1470 (quote (any each-any . #(each ((any . any) any))))))) syntmp-x-1469)))
-(install-global-transformer (quote let*) (lambda (syntmp-x-1490) ((lambda (syntmp-tmp-1491) ((lambda (syntmp-tmp-1492) (if (if syntmp-tmp-1492 (apply (lambda (syntmp-let*-1493 syntmp-x-1494 syntmp-v-1495 syntmp-e1-1496 syntmp-e2-1497) (andmap identifier? syntmp-x-1494)) syntmp-tmp-1492) #f) (apply (lambda (syntmp-let*-1499 syntmp-x-1500 syntmp-v-1501 syntmp-e1-1502 syntmp-e2-1503) (let syntmp-f-1504 ((syntmp-bindings-1505 (map list syntmp-x-1500 syntmp-v-1501))) (if (null? syntmp-bindings-1505) (cons (quote #(syntax-object let ((top) #(ribcage () () ()) #(ribcage #(f bindings) #((top) (top)) #("i" "i")) #(ribcage #(let* x v e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons (quote ()) (cons syntmp-e1-1502 syntmp-e2-1503))) ((lambda (syntmp-tmp-1509) ((lambda (syntmp-tmp-1510) (if syntmp-tmp-1510 (apply (lambda (syntmp-body-1511 syntmp-binding-1512) (list (quote #(syntax-object let ((top) #(ribcage #(body binding) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(f bindings) #((top) (top)) #("i" "i")) #(ribcage #(let* x v e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list syntmp-binding-1512) syntmp-body-1511)) syntmp-tmp-1510) (syntax-error syntmp-tmp-1509))) (syntax-dispatch syntmp-tmp-1509 (quote (any any))))) (list (syntmp-f-1504 (cdr syntmp-bindings-1505)) (car syntmp-bindings-1505)))))) syntmp-tmp-1492) (syntax-error syntmp-tmp-1491))) (syntax-dispatch syntmp-tmp-1491 (quote (any #(each (any any)) any . each-any))))) syntmp-x-1490)))
-(install-global-transformer (quote do) (lambda (syntmp-orig-x-1532) ((lambda (syntmp-tmp-1533) ((lambda (syntmp-tmp-1534) (if syntmp-tmp-1534 (apply (lambda (syntmp-_-1535 syntmp-var-1536 syntmp-init-1537 syntmp-step-1538 syntmp-e0-1539 syntmp-e1-1540 syntmp-c-1541) ((lambda (syntmp-tmp-1542) ((lambda (syntmp-tmp-1543) (if syntmp-tmp-1543 (apply (lambda (syntmp-step-1544) ((lambda (syntmp-tmp-1545) ((lambda (syntmp-tmp-1546) (if syntmp-tmp-1546 (apply (lambda () (list (quote #(syntax-object let ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (quote #(syntax-object doloop ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (map list syntmp-var-1536 syntmp-init-1537) (list (quote #(syntax-object if ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (list (quote #(syntax-object not ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) syntmp-e0-1539) (cons (quote #(syntax-object begin ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (append syntmp-c-1541 (list (cons (quote #(syntax-object doloop ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) syntmp-step-1544))))))) syntmp-tmp-1546) ((lambda (syntmp-tmp-1551) (if syntmp-tmp-1551 (apply (lambda (syntmp-e1-1552 syntmp-e2-1553) (list (quote #(syntax-object let ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (quote #(syntax-object doloop ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (map list syntmp-var-1536 syntmp-init-1537) (list (quote #(syntax-object if ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) syntmp-e0-1539 (cons (quote #(syntax-object begin ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (cons syntmp-e1-1552 syntmp-e2-1553)) (cons (quote #(syntax-object begin ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (append syntmp-c-1541 (list (cons (quote #(syntax-object doloop ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) syntmp-step-1544))))))) syntmp-tmp-1551) (syntax-error syntmp-tmp-1545))) (syntax-dispatch syntmp-tmp-1545 (quote (any . each-any)))))) (syntax-dispatch syntmp-tmp-1545 (quote ())))) syntmp-e1-1540)) syntmp-tmp-1543) (syntax-error syntmp-tmp-1542))) (syntax-dispatch syntmp-tmp-1542 (quote each-any)))) (map (lambda (syntmp-v-1560 syntmp-s-1561) ((lambda (syntmp-tmp-1562) ((lambda (syntmp-tmp-1563) (if syntmp-tmp-1563 (apply (lambda () syntmp-v-1560) syntmp-tmp-1563) ((lambda (syntmp-tmp-1564) (if syntmp-tmp-1564 (apply (lambda (syntmp-e-1565) syntmp-e-1565) syntmp-tmp-1564) ((lambda (syntmp-_-1566) (syntax-error syntmp-orig-x-1532)) syntmp-tmp-1562))) (syntax-dispatch syntmp-tmp-1562 (quote (any)))))) (syntax-dispatch syntmp-tmp-1562 (quote ())))) syntmp-s-1561)) syntmp-var-1536 syntmp-step-1538))) syntmp-tmp-1534) (syntax-error syntmp-tmp-1533))) (syntax-dispatch syntmp-tmp-1533 (quote (any #(each (any any . any)) (any . each-any) . each-any))))) syntmp-orig-x-1532)))
-(install-global-transformer (quote quasiquote) (letrec ((syntmp-quasicons-1594 (lambda (syntmp-x-1598 syntmp-y-1599) ((lambda (syntmp-tmp-1600) ((lambda (syntmp-tmp-1601) (if syntmp-tmp-1601 (apply (lambda (syntmp-x-1602 syntmp-y-1603) ((lambda (syntmp-tmp-1604) ((lambda (syntmp-tmp-1605) (if syntmp-tmp-1605 (apply (lambda (syntmp-dy-1606) ((lambda (syntmp-tmp-1607) ((lambda (syntmp-tmp-1608) (if syntmp-tmp-1608 (apply (lambda (syntmp-dx-1609) (list (quote #(syntax-object quote ((top) #(ribcage #(dx) #((top)) #("i")) #(ribcage #(dy) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) (cons syntmp-dx-1609 syntmp-dy-1606))) syntmp-tmp-1608) ((lambda (syntmp-_-1610) (if (null? syntmp-dy-1606) (list (quote #(syntax-object list ((top) #(ribcage #(_) #((top)) #("i")) #(ribcage #(dy) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1602) (list (quote #(syntax-object cons ((top) #(ribcage #(_) #((top)) #("i")) #(ribcage #(dy) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1602 syntmp-y-1603))) syntmp-tmp-1607))) (syntax-dispatch syntmp-tmp-1607 (quote (#(free-id #(syntax-object quote ((top) #(ribcage #(dy) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any))))) syntmp-x-1602)) syntmp-tmp-1605) ((lambda (syntmp-tmp-1611) (if syntmp-tmp-1611 (apply (lambda (syntmp-stuff-1612) (cons (quote #(syntax-object list ((top) #(ribcage #(stuff) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) (cons syntmp-x-1602 syntmp-stuff-1612))) syntmp-tmp-1611) ((lambda (syntmp-else-1613) (list (quote #(syntax-object cons ((top) #(ribcage #(else) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1602 syntmp-y-1603)) syntmp-tmp-1604))) (syntax-dispatch syntmp-tmp-1604 (quote (#(free-id #(syntax-object list ((top) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) . any)))))) (syntax-dispatch syntmp-tmp-1604 (quote (#(free-id #(syntax-object quote ((top) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any))))) syntmp-y-1603)) syntmp-tmp-1601) (syntax-error syntmp-tmp-1600))) (syntax-dispatch syntmp-tmp-1600 (quote (any any))))) (list syntmp-x-1598 syntmp-y-1599)))) (syntmp-quasiappend-1595 (lambda (syntmp-x-1614 syntmp-y-1615) ((lambda (syntmp-tmp-1616) ((lambda (syntmp-tmp-1617) (if syntmp-tmp-1617 (apply (lambda (syntmp-x-1618 syntmp-y-1619) ((lambda (syntmp-tmp-1620) ((lambda (syntmp-tmp-1621) (if syntmp-tmp-1621 (apply (lambda () syntmp-x-1618) syntmp-tmp-1621) ((lambda (syntmp-_-1622) (list (quote #(syntax-object append ((top) #(ribcage #(_) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1618 syntmp-y-1619)) syntmp-tmp-1620))) (syntax-dispatch syntmp-tmp-1620 (quote (#(free-id #(syntax-object quote ((top) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) ()))))) syntmp-y-1619)) syntmp-tmp-1617) (syntax-error syntmp-tmp-1616))) (syntax-dispatch syntmp-tmp-1616 (quote (any any))))) (list syntmp-x-1614 syntmp-y-1615)))) (syntmp-quasivector-1596 (lambda (syntmp-x-1623) ((lambda (syntmp-tmp-1624) ((lambda (syntmp-x-1625) ((lambda (syntmp-tmp-1626) ((lambda (syntmp-tmp-1627) (if syntmp-tmp-1627 (apply (lambda (syntmp-x-1628) (list (quote #(syntax-object quote ((top) #(ribcage #(x) #((top)) #("i")) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) (list->vector syntmp-x-1628))) syntmp-tmp-1627) ((lambda (syntmp-tmp-1630) (if syntmp-tmp-1630 (apply (lambda (syntmp-x-1631) (cons (quote #(syntax-object vector ((top) #(ribcage #(x) #((top)) #("i")) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1631)) syntmp-tmp-1630) ((lambda (syntmp-_-1633) (list (quote #(syntax-object list->vector ((top) #(ribcage #(_) #((top)) #("i")) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1625)) syntmp-tmp-1626))) (syntax-dispatch syntmp-tmp-1626 (quote (#(free-id #(syntax-object list ((top) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) . each-any)))))) (syntax-dispatch syntmp-tmp-1626 (quote (#(free-id #(syntax-object quote ((top) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) each-any))))) syntmp-x-1625)) syntmp-tmp-1624)) syntmp-x-1623))) (syntmp-quasi-1597 (lambda (syntmp-p-1634 syntmp-lev-1635) ((lambda (syntmp-tmp-1636) ((lambda (syntmp-tmp-1637) (if syntmp-tmp-1637 (apply (lambda (syntmp-p-1638) (if (= syntmp-lev-1635 0) syntmp-p-1638 (syntmp-quasicons-1594 (quote (#(syntax-object quote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f) #(syntax-object unquote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f))) (syntmp-quasi-1597 (list syntmp-p-1638) (- syntmp-lev-1635 1))))) syntmp-tmp-1637) ((lambda (syntmp-tmp-1639) (if syntmp-tmp-1639 (apply (lambda (syntmp-p-1640 syntmp-q-1641) (if (= syntmp-lev-1635 0) (syntmp-quasiappend-1595 syntmp-p-1640 (syntmp-quasi-1597 syntmp-q-1641 syntmp-lev-1635)) (syntmp-quasicons-1594 (syntmp-quasicons-1594 (quote (#(syntax-object quote ((top) #(ribcage #(p q) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f) #(syntax-object unquote-splicing ((top) #(ribcage #(p q) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f))) (syntmp-quasi-1597 (list syntmp-p-1640) (- syntmp-lev-1635 1))) (syntmp-quasi-1597 syntmp-q-1641 syntmp-lev-1635)))) syntmp-tmp-1639) ((lambda (syntmp-tmp-1642) (if syntmp-tmp-1642 (apply (lambda (syntmp-p-1643) (syntmp-quasicons-1594 (quote (#(syntax-object quote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f) #(syntax-object quasiquote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f))) (syntmp-quasi-1597 (list syntmp-p-1643) (+ syntmp-lev-1635 1)))) syntmp-tmp-1642) ((lambda (syntmp-tmp-1644) (if syntmp-tmp-1644 (apply (lambda (syntmp-p-1645 syntmp-q-1646) (syntmp-quasicons-1594 (syntmp-quasi-1597 syntmp-p-1645 syntmp-lev-1635) (syntmp-quasi-1597 syntmp-q-1646 syntmp-lev-1635))) syntmp-tmp-1644) ((lambda (syntmp-tmp-1647) (if syntmp-tmp-1647 (apply (lambda (syntmp-x-1648) (syntmp-quasivector-1596 (syntmp-quasi-1597 syntmp-x-1648 syntmp-lev-1635))) syntmp-tmp-1647) ((lambda (syntmp-p-1650) (list (quote #(syntax-object quote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-p-1650)) syntmp-tmp-1636))) (syntax-dispatch syntmp-tmp-1636 (quote #(vector each-any)))))) (syntax-dispatch syntmp-tmp-1636 (quote (any . any)))))) (syntax-dispatch syntmp-tmp-1636 (quote (#(free-id #(syntax-object quasiquote ((top) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any)))))) (syntax-dispatch syntmp-tmp-1636 (quote ((#(free-id #(syntax-object unquote-splicing ((top) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any) . any)))))) (syntax-dispatch syntmp-tmp-1636 (quote (#(free-id #(syntax-object unquote ((top) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any))))) syntmp-p-1634)))) (lambda (syntmp-x-1651) ((lambda (syntmp-tmp-1652) ((lambda (syntmp-tmp-1653) (if syntmp-tmp-1653 (apply (lambda (syntmp-_-1654 syntmp-e-1655) (syntmp-quasi-1597 syntmp-e-1655 0)) syntmp-tmp-1653) (syntax-error syntmp-tmp-1652))) (syntax-dispatch syntmp-tmp-1652 (quote (any any))))) syntmp-x-1651))))
-(install-global-transformer (quote include) (lambda (syntmp-x-1715) (letrec ((syntmp-read-file-1716 (lambda (syntmp-fn-1717 syntmp-k-1718) (let ((syntmp-p-1719 (open-input-file syntmp-fn-1717))) (let syntmp-f-1720 ((syntmp-x-1721 (read syntmp-p-1719))) (if (eof-object? syntmp-x-1721) (begin (close-input-port syntmp-p-1719) (quote ())) (cons (datum->syntax-object syntmp-k-1718 syntmp-x-1721) (syntmp-f-1720 (read syntmp-p-1719))))))))) ((lambda (syntmp-tmp-1722) ((lambda (syntmp-tmp-1723) (if syntmp-tmp-1723 (apply (lambda (syntmp-k-1724 syntmp-filename-1725) (let ((syntmp-fn-1726 (syntax-object->datum syntmp-filename-1725))) ((lambda (syntmp-tmp-1727) ((lambda (syntmp-tmp-1728) (if syntmp-tmp-1728 (apply (lambda (syntmp-exp-1729) (cons (quote #(syntax-object begin ((top) #(ribcage #(exp) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(fn) #((top)) #("i")) #(ribcage #(k filename) #((top) (top)) #("i" "i")) #(ribcage (read-file) ((top)) ("i")) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-exp-1729)) syntmp-tmp-1728) (syntax-error syntmp-tmp-1727))) (syntax-dispatch syntmp-tmp-1727 (quote each-any)))) (syntmp-read-file-1716 syntmp-fn-1726 syntmp-k-1724)))) syntmp-tmp-1723) (syntax-error syntmp-tmp-1722))) (syntax-dispatch syntmp-tmp-1722 (quote (any any))))) syntmp-x-1715))))
-(install-global-transformer (quote unquote) (lambda (syntmp-x-1746) ((lambda (syntmp-tmp-1747) ((lambda (syntmp-tmp-1748) (if syntmp-tmp-1748 (apply (lambda (syntmp-_-1749 syntmp-e-1750) (error (quote unquote) "expression ,~s not valid outside of quasiquote" (syntax-object->datum syntmp-e-1750))) syntmp-tmp-1748) (syntax-error syntmp-tmp-1747))) (syntax-dispatch syntmp-tmp-1747 (quote (any any))))) syntmp-x-1746)))
-(install-global-transformer (quote unquote-splicing) (lambda (syntmp-x-1756) ((lambda (syntmp-tmp-1757) ((lambda (syntmp-tmp-1758) (if syntmp-tmp-1758 (apply (lambda (syntmp-_-1759 syntmp-e-1760) (error (quote unquote-splicing) "expression ,@~s not valid outside of quasiquote" (syntax-object->datum syntmp-e-1760))) syntmp-tmp-1758) (syntax-error syntmp-tmp-1757))) (syntax-dispatch syntmp-tmp-1757 (quote (any any))))) syntmp-x-1756)))
-(install-global-transformer (quote case) (lambda (syntmp-x-1766) ((lambda (syntmp-tmp-1767) ((lambda (syntmp-tmp-1768) (if syntmp-tmp-1768 (apply (lambda (syntmp-_-1769 syntmp-e-1770 syntmp-m1-1771 syntmp-m2-1772) ((lambda (syntmp-tmp-1773) ((lambda (syntmp-body-1774) (list (quote #(syntax-object let ((top) #(ribcage #(body) #((top)) #("i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (list (quote #(syntax-object t ((top) #(ribcage #(body) #((top)) #("i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-e-1770)) syntmp-body-1774)) syntmp-tmp-1773)) (let syntmp-f-1775 ((syntmp-clause-1776 syntmp-m1-1771) (syntmp-clauses-1777 syntmp-m2-1772)) (if (null? syntmp-clauses-1777) ((lambda (syntmp-tmp-1779) ((lambda (syntmp-tmp-1780) (if syntmp-tmp-1780 (apply (lambda (syntmp-e1-1781 syntmp-e2-1782) (cons (quote #(syntax-object begin ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1781 syntmp-e2-1782))) syntmp-tmp-1780) ((lambda (syntmp-tmp-1784) (if syntmp-tmp-1784 (apply (lambda (syntmp-k-1785 syntmp-e1-1786 syntmp-e2-1787) (list (quote #(syntax-object if ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (quote #(syntax-object memv ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote #(syntax-object t ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (quote #(syntax-object quote ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-k-1785)) (cons (quote #(syntax-object begin ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1786 syntmp-e2-1787)))) syntmp-tmp-1784) ((lambda (syntmp-_-1790) (syntax-error syntmp-x-1766)) syntmp-tmp-1779))) (syntax-dispatch syntmp-tmp-1779 (quote (each-any any . each-any)))))) (syntax-dispatch syntmp-tmp-1779 (quote (#(free-id #(syntax-object else ((top) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) any . each-any))))) syntmp-clause-1776) ((lambda (syntmp-tmp-1791) ((lambda (syntmp-rest-1792) ((lambda (syntmp-tmp-1793) ((lambda (syntmp-tmp-1794) (if syntmp-tmp-1794 (apply (lambda (syntmp-k-1795 syntmp-e1-1796 syntmp-e2-1797) (list (quote #(syntax-object if ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (quote #(syntax-object memv ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote #(syntax-object t ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (quote #(syntax-object quote ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-k-1795)) (cons (quote #(syntax-object begin ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1796 syntmp-e2-1797)) syntmp-rest-1792)) syntmp-tmp-1794) ((lambda (syntmp-_-1800) (syntax-error syntmp-x-1766)) syntmp-tmp-1793))) (syntax-dispatch syntmp-tmp-1793 (quote (each-any any . each-any))))) syntmp-clause-1776)) syntmp-tmp-1791)) (syntmp-f-1775 (car syntmp-clauses-1777) (cdr syntmp-clauses-1777))))))) syntmp-tmp-1768) (syntax-error syntmp-tmp-1767))) (syntax-dispatch syntmp-tmp-1767 (quote (any any any . each-any))))) syntmp-x-1766)))
-(install-global-transformer (quote identifier-syntax) (lambda (syntmp-x-1830) ((lambda (syntmp-tmp-1831) ((lambda (syntmp-tmp-1832) (if syntmp-tmp-1832 (apply (lambda (syntmp-_-1833 syntmp-e-1834) (list (quote #(syntax-object lambda ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote (#(syntax-object x ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f))) (list (quote #(syntax-object syntax-case ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote #(syntax-object x ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote ()) (list (quote #(syntax-object id ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote (#(syntax-object identifier? ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f) (#(syntax-object syntax ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f) #(syntax-object id ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)))) (list (quote #(syntax-object syntax ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-e-1834)) (list (cons syntmp-_-1833 (quote (#(syntax-object x ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f) #(syntax-object ... ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)))) (list (quote #(syntax-object syntax ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e-1834 (quote (#(syntax-object x ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f) #(syntax-object ... ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f))))))))) syntmp-tmp-1832) (syntax-error syntmp-tmp-1831))) (syntax-dispatch syntmp-tmp-1831 (quote (any any))))) syntmp-x-1830)))
+(letrec ((syntmp-lambda-var-list-166 (lambda (syntmp-vars-557) (let syntmp-lvl-558 ((syntmp-vars-559 syntmp-vars-557) (syntmp-ls-560 (quote ())) (syntmp-w-561 (quote (())))) (cond ((pair? syntmp-vars-559) (syntmp-lvl-558 (cdr syntmp-vars-559) (cons (syntmp-wrap-145 (car syntmp-vars-559) syntmp-w-561 #f) syntmp-ls-560) syntmp-w-561)) ((syntmp-id?-117 syntmp-vars-559) (cons (syntmp-wrap-145 syntmp-vars-559 syntmp-w-561 #f) syntmp-ls-560)) ((null? syntmp-vars-559) syntmp-ls-560) ((syntmp-syntax-object?-101 syntmp-vars-559) (syntmp-lvl-558 (syntmp-syntax-object-expression-102 syntmp-vars-559) syntmp-ls-560 (syntmp-join-wraps-136 syntmp-w-561 (syntmp-syntax-object-wrap-103 syntmp-vars-559)))) ((annotation? syntmp-vars-559) (syntmp-lvl-558 (annotation-expression syntmp-vars-559) syntmp-ls-560 syntmp-w-561)) (else (cons syntmp-vars-559 syntmp-ls-560)))))) (syntmp-gen-var-165 (lambda (syntmp-id-562) (let ((syntmp-id-563 (if (syntmp-syntax-object?-101 syntmp-id-562) (syntmp-syntax-object-expression-102 syntmp-id-562) syntmp-id-562))) (if (annotation? syntmp-id-563) (syntmp-build-annotated-94 (annotation-source syntmp-id-563) (gensym (symbol->string (annotation-expression syntmp-id-563)))) (syntmp-build-annotated-94 #f (gensym (symbol->string syntmp-id-563))))))) (syntmp-strip-164 (lambda (syntmp-x-564 syntmp-w-565) (if (memq (quote top) (syntmp-wrap-marks-120 syntmp-w-565)) (if (or (annotation? syntmp-x-564) (and (pair? syntmp-x-564) (annotation? (car syntmp-x-564)))) (syntmp-strip-annotation-163 syntmp-x-564 #f) syntmp-x-564) (let syntmp-f-566 ((syntmp-x-567 syntmp-x-564)) (cond ((syntmp-syntax-object?-101 syntmp-x-567) (syntmp-strip-164 (syntmp-syntax-object-expression-102 syntmp-x-567) (syntmp-syntax-object-wrap-103 syntmp-x-567))) ((pair? syntmp-x-567) (let ((syntmp-a-568 (syntmp-f-566 (car syntmp-x-567))) (syntmp-d-569 (syntmp-f-566 (cdr syntmp-x-567)))) (if (and (eq? syntmp-a-568 (car syntmp-x-567)) (eq? syntmp-d-569 (cdr syntmp-x-567))) syntmp-x-567 (cons syntmp-a-568 syntmp-d-569)))) ((vector? syntmp-x-567) (let ((syntmp-old-570 (vector->list syntmp-x-567))) (let ((syntmp-new-571 (map syntmp-f-566 syntmp-old-570))) (if (andmap eq? syntmp-old-570 syntmp-new-571) syntmp-x-567 (list->vector syntmp-new-571))))) (else syntmp-x-567)))))) (syntmp-strip-annotation-163 (lambda (syntmp-x-572 syntmp-parent-573) (cond ((pair? syntmp-x-572) (let ((syntmp-new-574 (cons #f #f))) (begin (if syntmp-parent-573 (set-annotation-stripped! syntmp-parent-573 syntmp-new-574)) (set-car! syntmp-new-574 (syntmp-strip-annotation-163 (car syntmp-x-572) #f)) (set-cdr! syntmp-new-574 (syntmp-strip-annotation-163 (cdr syntmp-x-572) #f)) syntmp-new-574))) ((annotation? syntmp-x-572) (or (annotation-stripped syntmp-x-572) (syntmp-strip-annotation-163 (annotation-expression syntmp-x-572) syntmp-x-572))) ((vector? syntmp-x-572) (let ((syntmp-new-575 (make-vector (vector-length syntmp-x-572)))) (begin (if syntmp-parent-573 (set-annotation-stripped! syntmp-parent-573 syntmp-new-575)) (let syntmp-loop-576 ((syntmp-i-577 (- (vector-length syntmp-x-572) 1))) (unless (syntmp-fx<-88 syntmp-i-577 0) (vector-set! syntmp-new-575 syntmp-i-577 (syntmp-strip-annotation-163 (vector-ref syntmp-x-572 syntmp-i-577) #f)) (syntmp-loop-576 (syntmp-fx--86 syntmp-i-577 1)))) syntmp-new-575))) (else syntmp-x-572)))) (syntmp-ellipsis?-162 (lambda (syntmp-x-578) (and (syntmp-nonsymbol-id?-116 syntmp-x-578) (syntmp-free-id=?-140 syntmp-x-578 (quote #(syntax-object ... ((top) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f)))))) (syntmp-chi-void-161 (lambda () (syntmp-build-annotated-94 #f (list (syntmp-build-annotated-94 #f (quote void)))))) (syntmp-eval-local-transformer-160 (lambda (syntmp-expanded-579 syntmp-mod-580) (let ((syntmp-p-581 (syntmp-local-eval-hook-90 syntmp-expanded-579 syntmp-mod-580))) (if (procedure? syntmp-p-581) syntmp-p-581 (syntax-error syntmp-p-581 "nonprocedure transformer"))))) (syntmp-chi-local-syntax-159 (lambda (syntmp-rec?-582 syntmp-e-583 syntmp-r-584 syntmp-w-585 syntmp-s-586 syntmp-mod-587 syntmp-k-588) ((lambda (syntmp-tmp-589) ((lambda (syntmp-tmp-590) (if syntmp-tmp-590 (apply (lambda (syntmp-_-591 syntmp-id-592 syntmp-val-593 syntmp-e1-594 syntmp-e2-595) (let ((syntmp-ids-596 syntmp-id-592)) (if (not (syntmp-valid-bound-ids?-142 syntmp-ids-596)) (syntax-error syntmp-e-583 "duplicate bound keyword in") (let ((syntmp-labels-598 (syntmp-gen-labels-123 syntmp-ids-596))) (let ((syntmp-new-w-599 (syntmp-make-binding-wrap-134 syntmp-ids-596 syntmp-labels-598 syntmp-w-585))) (syntmp-k-588 (cons syntmp-e1-594 syntmp-e2-595) (syntmp-extend-env-111 syntmp-labels-598 (let ((syntmp-w-601 (if syntmp-rec?-582 syntmp-new-w-599 syntmp-w-585)) (syntmp-trans-r-602 (syntmp-macros-only-env-113 syntmp-r-584))) (map (lambda (syntmp-x-603) (cons (quote macro) (syntmp-eval-local-transformer-160 (syntmp-chi-153 syntmp-x-603 syntmp-trans-r-602 syntmp-w-601 syntmp-mod-587) syntmp-mod-587))) syntmp-val-593)) syntmp-r-584) syntmp-new-w-599 syntmp-s-586 syntmp-mod-587)))))) syntmp-tmp-590) ((lambda (syntmp-_-605) (syntax-error (syntmp-source-wrap-146 syntmp-e-583 syntmp-w-585 syntmp-s-586 syntmp-mod-587))) syntmp-tmp-589))) (syntax-dispatch syntmp-tmp-589 (quote (any #(each (any any)) any . each-any))))) syntmp-e-583))) (syntmp-chi-lambda-clause-158 (lambda (syntmp-e-606 syntmp-c-607 syntmp-r-608 syntmp-w-609 syntmp-mod-610 syntmp-k-611) ((lambda (syntmp-tmp-612) ((lambda (syntmp-tmp-613) (if syntmp-tmp-613 (apply (lambda (syntmp-id-614 syntmp-e1-615 syntmp-e2-616) (let ((syntmp-ids-617 syntmp-id-614)) (if (not (syntmp-valid-bound-ids?-142 syntmp-ids-617)) (syntax-error syntmp-e-606 "invalid parameter list in") (let ((syntmp-labels-619 (syntmp-gen-labels-123 syntmp-ids-617)) (syntmp-new-vars-620 (map syntmp-gen-var-165 syntmp-ids-617))) (syntmp-k-611 syntmp-new-vars-620 (syntmp-chi-body-157 (cons syntmp-e1-615 syntmp-e2-616) syntmp-e-606 (syntmp-extend-var-env-112 syntmp-labels-619 syntmp-new-vars-620 syntmp-r-608) (syntmp-make-binding-wrap-134 syntmp-ids-617 syntmp-labels-619 syntmp-w-609) syntmp-mod-610)))))) syntmp-tmp-613) ((lambda (syntmp-tmp-622) (if syntmp-tmp-622 (apply (lambda (syntmp-ids-623 syntmp-e1-624 syntmp-e2-625) (let ((syntmp-old-ids-626 (syntmp-lambda-var-list-166 syntmp-ids-623))) (if (not (syntmp-valid-bound-ids?-142 syntmp-old-ids-626)) (syntax-error syntmp-e-606 "invalid parameter list in") (let ((syntmp-labels-627 (syntmp-gen-labels-123 syntmp-old-ids-626)) (syntmp-new-vars-628 (map syntmp-gen-var-165 syntmp-old-ids-626))) (syntmp-k-611 (let syntmp-f-629 ((syntmp-ls1-630 (cdr syntmp-new-vars-628)) (syntmp-ls2-631 (car syntmp-new-vars-628))) (if (null? syntmp-ls1-630) syntmp-ls2-631 (syntmp-f-629 (cdr syntmp-ls1-630) (cons (car syntmp-ls1-630) syntmp-ls2-631)))) (syntmp-chi-body-157 (cons syntmp-e1-624 syntmp-e2-625) syntmp-e-606 (syntmp-extend-var-env-112 syntmp-labels-627 syntmp-new-vars-628 syntmp-r-608) (syntmp-make-binding-wrap-134 syntmp-old-ids-626 syntmp-labels-627 syntmp-w-609) syntmp-mod-610)))))) syntmp-tmp-622) ((lambda (syntmp-_-633) (syntax-error syntmp-e-606)) syntmp-tmp-612))) (syntax-dispatch syntmp-tmp-612 (quote (any any . each-any)))))) (syntax-dispatch syntmp-tmp-612 (quote (each-any any . each-any))))) syntmp-c-607))) (syntmp-chi-body-157 (lambda (syntmp-body-634 syntmp-outer-form-635 syntmp-r-636 syntmp-w-637 syntmp-mod-638) (let ((syntmp-r-639 (cons (quote ("placeholder" placeholder)) syntmp-r-636))) (let ((syntmp-ribcage-640 (syntmp-make-ribcage-124 (quote ()) (quote ()) (quote ())))) (let ((syntmp-w-641 (syntmp-make-wrap-119 (syntmp-wrap-marks-120 syntmp-w-637) (cons syntmp-ribcage-640 (syntmp-wrap-subst-121 syntmp-w-637))))) (let syntmp-parse-642 ((syntmp-body-643 (map (lambda (syntmp-x-649) (cons syntmp-r-639 (syntmp-wrap-145 syntmp-x-649 syntmp-w-641 syntmp-mod-638))) syntmp-body-634)) (syntmp-ids-644 (quote ())) (syntmp-labels-645 (quote ())) (syntmp-vars-646 (quote ())) (syntmp-vals-647 (quote ())) (syntmp-bindings-648 (quote ()))) (if (null? syntmp-body-643) (syntax-error syntmp-outer-form-635 "no expressions in body") (let ((syntmp-e-650 (cdar syntmp-body-643)) (syntmp-er-651 (caar syntmp-body-643))) (call-with-values (lambda () (syntmp-syntax-type-151 syntmp-e-650 syntmp-er-651 (quote (())) #f syntmp-ribcage-640 syntmp-mod-638)) (lambda (syntmp-type-652 syntmp-value-653 syntmp-e-654 syntmp-w-655 syntmp-s-656 syntmp-mod-657) (let ((syntmp-t-658 syntmp-type-652)) (if (memv syntmp-t-658 (quote (define-form))) (let ((syntmp-id-659 (syntmp-wrap-145 syntmp-value-653 syntmp-w-655 syntmp-mod-657)) (syntmp-label-660 (syntmp-gen-label-122))) (let ((syntmp-var-661 (syntmp-gen-var-165 syntmp-id-659))) (begin (syntmp-extend-ribcage!-133 syntmp-ribcage-640 syntmp-id-659 syntmp-label-660) (syntmp-parse-642 (cdr syntmp-body-643) (cons syntmp-id-659 syntmp-ids-644) (cons syntmp-label-660 syntmp-labels-645) (cons syntmp-var-661 syntmp-vars-646) (cons (cons syntmp-er-651 (syntmp-wrap-145 syntmp-e-654 syntmp-w-655 syntmp-mod-657)) syntmp-vals-647) (cons (cons (quote lexical) syntmp-var-661) syntmp-bindings-648))))) (if (memv syntmp-t-658 (quote (define-syntax-form))) (let ((syntmp-id-662 (syntmp-wrap-145 syntmp-value-653 syntmp-w-655 syntmp-mod-657)) (syntmp-label-663 (syntmp-gen-label-122))) (begin (syntmp-extend-ribcage!-133 syntmp-ribcage-640 syntmp-id-662 syntmp-label-663) (syntmp-parse-642 (cdr syntmp-body-643) (cons syntmp-id-662 syntmp-ids-644) (cons syntmp-label-663 syntmp-labels-645) syntmp-vars-646 syntmp-vals-647 (cons (cons (quote macro) (cons syntmp-er-651 (syntmp-wrap-145 syntmp-e-654 syntmp-w-655 syntmp-mod-657))) syntmp-bindings-648)))) (if (memv syntmp-t-658 (quote (begin-form))) ((lambda (syntmp-tmp-664) ((lambda (syntmp-tmp-665) (if syntmp-tmp-665 (apply (lambda (syntmp-_-666 syntmp-e1-667) (syntmp-parse-642 (let syntmp-f-668 ((syntmp-forms-669 syntmp-e1-667)) (if (null? syntmp-forms-669) (cdr syntmp-body-643) (cons (cons syntmp-er-651 (syntmp-wrap-145 (car syntmp-forms-669) syntmp-w-655 syntmp-mod-657)) (syntmp-f-668 (cdr syntmp-forms-669))))) syntmp-ids-644 syntmp-labels-645 syntmp-vars-646 syntmp-vals-647 syntmp-bindings-648)) syntmp-tmp-665) (syntax-error syntmp-tmp-664))) (syntax-dispatch syntmp-tmp-664 (quote (any . each-any))))) syntmp-e-654) (if (memv syntmp-t-658 (quote (local-syntax-form))) (syntmp-chi-local-syntax-159 syntmp-value-653 syntmp-e-654 syntmp-er-651 syntmp-w-655 syntmp-s-656 syntmp-mod-657 (lambda (syntmp-forms-671 syntmp-er-672 syntmp-w-673 syntmp-s-674 syntmp-mod-675) (syntmp-parse-642 (let syntmp-f-676 ((syntmp-forms-677 syntmp-forms-671)) (if (null? syntmp-forms-677) (cdr syntmp-body-643) (cons (cons syntmp-er-672 (syntmp-wrap-145 (car syntmp-forms-677) syntmp-w-673 syntmp-mod-675)) (syntmp-f-676 (cdr syntmp-forms-677))))) syntmp-ids-644 syntmp-labels-645 syntmp-vars-646 syntmp-vals-647 syntmp-bindings-648))) (if (null? syntmp-ids-644) (syntmp-build-sequence-96 #f (map (lambda (syntmp-x-678) (syntmp-chi-153 (cdr syntmp-x-678) (car syntmp-x-678) (quote (())) syntmp-mod-657)) (cons (cons syntmp-er-651 (syntmp-source-wrap-146 syntmp-e-654 syntmp-w-655 syntmp-s-656 syntmp-mod-657)) (cdr syntmp-body-643)))) (begin (if (not (syntmp-valid-bound-ids?-142 syntmp-ids-644)) (syntax-error syntmp-outer-form-635 "invalid or duplicate identifier in definition")) (let syntmp-loop-679 ((syntmp-bs-680 syntmp-bindings-648) (syntmp-er-cache-681 #f) (syntmp-r-cache-682 #f)) (if (not (null? syntmp-bs-680)) (let ((syntmp-b-683 (car syntmp-bs-680))) (if (eq? (car syntmp-b-683) (quote macro)) (let ((syntmp-er-684 (cadr syntmp-b-683))) (let ((syntmp-r-cache-685 (if (eq? syntmp-er-684 syntmp-er-cache-681) syntmp-r-cache-682 (syntmp-macros-only-env-113 syntmp-er-684)))) (begin (set-cdr! syntmp-b-683 (syntmp-eval-local-transformer-160 (syntmp-chi-153 (cddr syntmp-b-683) syntmp-r-cache-685 (quote (())) syntmp-mod-657) syntmp-mod-657)) (syntmp-loop-679 (cdr syntmp-bs-680) syntmp-er-684 syntmp-r-cache-685)))) (syntmp-loop-679 (cdr syntmp-bs-680) syntmp-er-cache-681 syntmp-r-cache-682))))) (set-cdr! syntmp-r-639 (syntmp-extend-env-111 syntmp-labels-645 syntmp-bindings-648 (cdr syntmp-r-639))) (syntmp-build-letrec-99 #f syntmp-vars-646 (map (lambda (syntmp-x-686) (syntmp-chi-153 (cdr syntmp-x-686) (car syntmp-x-686) (quote (())) syntmp-mod-657)) syntmp-vals-647) (syntmp-build-sequence-96 #f (map (lambda (syntmp-x-687) (syntmp-chi-153 (cdr syntmp-x-687) (car syntmp-x-687) (quote (())) syntmp-mod-657)) (cons (cons syntmp-er-651 (syntmp-source-wrap-146 syntmp-e-654 syntmp-w-655 syntmp-s-656 syntmp-mod-657)) (cdr syntmp-body-643)))))))))))))))))))))) (syntmp-chi-macro-156 (lambda (syntmp-p-688 syntmp-e-689 syntmp-r-690 syntmp-w-691 syntmp-rib-692 syntmp-mod-693) (letrec ((syntmp-rebuild-macro-output-694 (lambda (syntmp-x-695 syntmp-m-696) (cond ((pair? syntmp-x-695) (cons (syntmp-rebuild-macro-output-694 (car syntmp-x-695) syntmp-m-696) (syntmp-rebuild-macro-output-694 (cdr syntmp-x-695) syntmp-m-696))) ((syntmp-syntax-object?-101 syntmp-x-695) (let ((syntmp-w-697 (syntmp-syntax-object-wrap-103 syntmp-x-695))) (let ((syntmp-ms-698 (syntmp-wrap-marks-120 syntmp-w-697)) (syntmp-s-699 (syntmp-wrap-subst-121 syntmp-w-697))) (if (and (pair? syntmp-ms-698) (eq? (car syntmp-ms-698) #f)) (syntmp-make-syntax-object-100 (syntmp-syntax-object-expression-102 syntmp-x-695) (syntmp-make-wrap-119 (cdr syntmp-ms-698) (if syntmp-rib-692 (cons syntmp-rib-692 (cdr syntmp-s-699)) (cdr syntmp-s-699))) (syntmp-syntax-object-module-104 syntmp-x-695)) (syntmp-make-syntax-object-100 (syntmp-syntax-object-expression-102 syntmp-x-695) (syntmp-make-wrap-119 (cons syntmp-m-696 syntmp-ms-698) (if syntmp-rib-692 (cons syntmp-rib-692 (cons (quote shift) syntmp-s-699)) (cons (quote shift) syntmp-s-699))) (procedure-module syntmp-p-688)))))) ((vector? syntmp-x-695) (let ((syntmp-n-700 (vector-length syntmp-x-695))) (let ((syntmp-v-701 (make-vector syntmp-n-700))) (let syntmp-doloop-702 ((syntmp-i-703 0)) (if (syntmp-fx=-87 syntmp-i-703 syntmp-n-700) syntmp-v-701 (begin (vector-set! syntmp-v-701 syntmp-i-703 (syntmp-rebuild-macro-output-694 (vector-ref syntmp-x-695 syntmp-i-703) syntmp-m-696)) (syntmp-doloop-702 (syntmp-fx+-85 syntmp-i-703 1)))))))) ((symbol? syntmp-x-695) (syntax-error syntmp-x-695 "encountered raw symbol in macro output")) (else syntmp-x-695))))) (syntmp-rebuild-macro-output-694 (syntmp-p-688 (syntmp-wrap-145 syntmp-e-689 (syntmp-anti-mark-132 syntmp-w-691) syntmp-mod-693)) (string #\m))))) (syntmp-chi-application-155 (lambda (syntmp-x-704 syntmp-e-705 syntmp-r-706 syntmp-w-707 syntmp-s-708 syntmp-mod-709) ((lambda (syntmp-tmp-710) ((lambda (syntmp-tmp-711) (if syntmp-tmp-711 (apply (lambda (syntmp-e0-712 syntmp-e1-713) (syntmp-build-annotated-94 syntmp-s-708 (cons syntmp-x-704 (map (lambda (syntmp-e-714) (syntmp-chi-153 syntmp-e-714 syntmp-r-706 syntmp-w-707 syntmp-mod-709)) syntmp-e1-713)))) syntmp-tmp-711) (syntax-error syntmp-tmp-710))) (syntax-dispatch syntmp-tmp-710 (quote (any . each-any))))) syntmp-e-705))) (syntmp-chi-expr-154 (lambda (syntmp-type-716 syntmp-value-717 syntmp-e-718 syntmp-r-719 syntmp-w-720 syntmp-s-721 syntmp-mod-722) (let ((syntmp-t-723 syntmp-type-716)) (if (memv syntmp-t-723 (quote (lexical))) (syntmp-build-annotated-94 syntmp-s-721 syntmp-value-717) (if (memv syntmp-t-723 (quote (core external-macro))) (syntmp-value-717 syntmp-e-718 syntmp-r-719 syntmp-w-720 syntmp-s-721 syntmp-mod-722) (if (memv syntmp-t-723 (quote (lexical-call))) (syntmp-chi-application-155 (syntmp-build-annotated-94 (syntmp-source-annotation-108 (car syntmp-e-718)) syntmp-value-717) syntmp-e-718 syntmp-r-719 syntmp-w-720 syntmp-s-721 syntmp-mod-722) (if (memv syntmp-t-723 (quote (global-call))) (syntmp-chi-application-155 (syntmp-build-annotated-94 (syntmp-source-annotation-108 (car syntmp-e-718)) (make-module-ref #f syntmp-value-717 syntmp-mod-722)) syntmp-e-718 syntmp-r-719 syntmp-w-720 syntmp-s-721 syntmp-mod-722) (if (memv syntmp-t-723 (quote (constant))) (syntmp-build-data-95 syntmp-s-721 (syntmp-strip-164 (syntmp-source-wrap-146 syntmp-e-718 syntmp-w-720 syntmp-s-721 syntmp-mod-722) (quote (())))) (if (memv syntmp-t-723 (quote (global))) (syntmp-build-annotated-94 syntmp-s-721 (make-module-ref #f syntmp-value-717 syntmp-mod-722)) (if (memv syntmp-t-723 (quote (call))) (syntmp-chi-application-155 (syntmp-chi-153 (car syntmp-e-718) syntmp-r-719 syntmp-w-720 syntmp-mod-722) syntmp-e-718 syntmp-r-719 syntmp-w-720 syntmp-s-721 syntmp-mod-722) (if (memv syntmp-t-723 (quote (begin-form))) ((lambda (syntmp-tmp-724) ((lambda (syntmp-tmp-725) (if syntmp-tmp-725 (apply (lambda (syntmp-_-726 syntmp-e1-727 syntmp-e2-728) (syntmp-chi-sequence-147 (cons syntmp-e1-727 syntmp-e2-728) syntmp-r-719 syntmp-w-720 syntmp-s-721 syntmp-mod-722)) syntmp-tmp-725) (syntax-error syntmp-tmp-724))) (syntax-dispatch syntmp-tmp-724 (quote (any any . each-any))))) syntmp-e-718) (if (memv syntmp-t-723 (quote (local-syntax-form))) (syntmp-chi-local-syntax-159 syntmp-value-717 syntmp-e-718 syntmp-r-719 syntmp-w-720 syntmp-s-721 syntmp-mod-722 syntmp-chi-sequence-147) (if (memv syntmp-t-723 (quote (eval-when-form))) ((lambda (syntmp-tmp-730) ((lambda (syntmp-tmp-731) (if syntmp-tmp-731 (apply (lambda (syntmp-_-732 syntmp-x-733 syntmp-e1-734 syntmp-e2-735) (let ((syntmp-when-list-736 (syntmp-chi-when-list-150 syntmp-e-718 syntmp-x-733 syntmp-w-720))) (if (memq (quote eval) syntmp-when-list-736) (syntmp-chi-sequence-147 (cons syntmp-e1-734 syntmp-e2-735) syntmp-r-719 syntmp-w-720 syntmp-s-721 syntmp-mod-722) (syntmp-chi-void-161)))) syntmp-tmp-731) (syntax-error syntmp-tmp-730))) (syntax-dispatch syntmp-tmp-730 (quote (any each-any any . each-any))))) syntmp-e-718) (if (memv syntmp-t-723 (quote (define-form define-syntax-form))) (syntax-error (syntmp-wrap-145 syntmp-value-717 syntmp-w-720 #f) "invalid context for definition of") (if (memv syntmp-t-723 (quote (syntax))) (syntax-error (syntmp-source-wrap-146 syntmp-e-718 syntmp-w-720 syntmp-s-721 syntmp-mod-722) "reference to pattern variable outside syntax form") (if (memv syntmp-t-723 (quote (displaced-lexical))) (syntax-error (syntmp-source-wrap-146 syntmp-e-718 syntmp-w-720 syntmp-s-721 syntmp-mod-722) "reference to identifier outside its scope") (syntax-error (syntmp-source-wrap-146 syntmp-e-718 syntmp-w-720 syntmp-s-721 syntmp-mod-722)))))))))))))))))) (syntmp-chi-153 (lambda (syntmp-e-739 syntmp-r-740 syntmp-w-741 syntmp-mod-742) (call-with-values (lambda () (syntmp-syntax-type-151 syntmp-e-739 syntmp-r-740 syntmp-w-741 #f #f syntmp-mod-742)) (lambda (syntmp-type-743 syntmp-value-744 syntmp-e-745 syntmp-w-746 syntmp-s-747 syntmp-mod-748) (syntmp-chi-expr-154 syntmp-type-743 syntmp-value-744 syntmp-e-745 syntmp-r-740 syntmp-w-746 syntmp-s-747 syntmp-mod-748))))) (syntmp-chi-top-152 (lambda (syntmp-e-749 syntmp-r-750 syntmp-w-751 syntmp-m-752 syntmp-esew-753 syntmp-mod-754) (call-with-values (lambda () (syntmp-syntax-type-151 syntmp-e-749 syntmp-r-750 syntmp-w-751 #f #f syntmp-mod-754)) (lambda (syntmp-type-769 syntmp-value-770 syntmp-e-771 syntmp-w-772 syntmp-s-773 syntmp-mod-774) (let ((syntmp-t-775 syntmp-type-769)) (if (memv syntmp-t-775 (quote (begin-form))) ((lambda (syntmp-tmp-776) ((lambda (syntmp-tmp-777) (if syntmp-tmp-777 (apply (lambda (syntmp-_-778) (syntmp-chi-void-161)) syntmp-tmp-777) ((lambda (syntmp-tmp-779) (if syntmp-tmp-779 (apply (lambda (syntmp-_-780 syntmp-e1-781 syntmp-e2-782) (syntmp-chi-top-sequence-148 (cons syntmp-e1-781 syntmp-e2-782) syntmp-r-750 syntmp-w-772 syntmp-s-773 syntmp-m-752 syntmp-esew-753 syntmp-mod-774)) syntmp-tmp-779) (syntax-error syntmp-tmp-776))) (syntax-dispatch syntmp-tmp-776 (quote (any any . each-any)))))) (syntax-dispatch syntmp-tmp-776 (quote (any))))) syntmp-e-771) (if (memv syntmp-t-775 (quote (local-syntax-form))) (syntmp-chi-local-syntax-159 syntmp-value-770 syntmp-e-771 syntmp-r-750 syntmp-w-772 syntmp-s-773 syntmp-mod-774 (lambda (syntmp-body-784 syntmp-r-785 syntmp-w-786 syntmp-s-787 syntmp-mod-788) (syntmp-chi-top-sequence-148 syntmp-body-784 syntmp-r-785 syntmp-w-786 syntmp-s-787 syntmp-m-752 syntmp-esew-753 syntmp-mod-788))) (if (memv syntmp-t-775 (quote (eval-when-form))) ((lambda (syntmp-tmp-789) ((lambda (syntmp-tmp-790) (if syntmp-tmp-790 (apply (lambda (syntmp-_-791 syntmp-x-792 syntmp-e1-793 syntmp-e2-794) (let ((syntmp-when-list-795 (syntmp-chi-when-list-150 syntmp-e-771 syntmp-x-792 syntmp-w-772)) (syntmp-body-796 (cons syntmp-e1-793 syntmp-e2-794))) (cond ((eq? syntmp-m-752 (quote e)) (if (memq (quote eval) syntmp-when-list-795) (syntmp-chi-top-sequence-148 syntmp-body-796 syntmp-r-750 syntmp-w-772 syntmp-s-773 (quote e) (quote (eval)) syntmp-mod-774) (syntmp-chi-void-161))) ((memq (quote load) syntmp-when-list-795) (if (or (memq (quote compile) syntmp-when-list-795) (and (eq? syntmp-m-752 (quote c&e)) (memq (quote eval) syntmp-when-list-795))) (syntmp-chi-top-sequence-148 syntmp-body-796 syntmp-r-750 syntmp-w-772 syntmp-s-773 (quote c&e) (quote (compile load)) syntmp-mod-774) (if (memq syntmp-m-752 (quote (c c&e))) (syntmp-chi-top-sequence-148 syntmp-body-796 syntmp-r-750 syntmp-w-772 syntmp-s-773 (quote c) (quote (load)) syntmp-mod-774) (syntmp-chi-void-161)))) ((or (memq (quote compile) syntmp-when-list-795) (and (eq? syntmp-m-752 (quote c&e)) (memq (quote eval) syntmp-when-list-795))) (syntmp-top-level-eval-hook-89 (syntmp-chi-top-sequence-148 syntmp-body-796 syntmp-r-750 syntmp-w-772 syntmp-s-773 (quote e) (quote (eval)) syntmp-mod-774) syntmp-mod-774) (syntmp-chi-void-161)) (else (syntmp-chi-void-161))))) syntmp-tmp-790) (syntax-error syntmp-tmp-789))) (syntax-dispatch syntmp-tmp-789 (quote (any each-any any . each-any))))) syntmp-e-771) (if (memv syntmp-t-775 (quote (define-syntax-form))) (let ((syntmp-n-799 (syntmp-id-var-name-139 syntmp-value-770 syntmp-w-772)) (syntmp-r-800 (syntmp-macros-only-env-113 syntmp-r-750))) (let ((syntmp-t-801 syntmp-m-752)) (if (memv syntmp-t-801 (quote (c))) (if (memq (quote compile) syntmp-esew-753) (let ((syntmp-e-802 (syntmp-chi-install-global-149 syntmp-n-799 (syntmp-chi-153 syntmp-e-771 syntmp-r-800 syntmp-w-772 syntmp-mod-774)))) (begin (syntmp-top-level-eval-hook-89 syntmp-e-802 syntmp-mod-774) (if (memq (quote load) syntmp-esew-753) syntmp-e-802 (syntmp-chi-void-161)))) (if (memq (quote load) syntmp-esew-753) (syntmp-chi-install-global-149 syntmp-n-799 (syntmp-chi-153 syntmp-e-771 syntmp-r-800 syntmp-w-772 syntmp-mod-774)) (syntmp-chi-void-161))) (if (memv syntmp-t-801 (quote (c&e))) (let ((syntmp-e-803 (syntmp-chi-install-global-149 syntmp-n-799 (syntmp-chi-153 syntmp-e-771 syntmp-r-800 syntmp-w-772 syntmp-mod-774)))) (begin (syntmp-top-level-eval-hook-89 syntmp-e-803 syntmp-mod-774) syntmp-e-803)) (begin (if (memq (quote eval) syntmp-esew-753) (syntmp-top-level-eval-hook-89 (syntmp-chi-install-global-149 syntmp-n-799 (syntmp-chi-153 syntmp-e-771 syntmp-r-800 syntmp-w-772 syntmp-mod-774)) syntmp-mod-774)) (syntmp-chi-void-161)))))) (if (memv syntmp-t-775 (quote (define-form))) (let ((syntmp-n-804 (syntmp-id-var-name-139 syntmp-value-770 syntmp-w-772))) (let ((syntmp-type-805 (syntmp-binding-type-109 (syntmp-lookup-114 syntmp-n-804 syntmp-r-750)))) (let ((syntmp-t-806 syntmp-type-805)) (if (memv syntmp-t-806 (quote (global))) (let ((syntmp-x-807 (syntmp-build-annotated-94 syntmp-s-773 (list (quote define) syntmp-n-804 (syntmp-chi-153 syntmp-e-771 syntmp-r-750 syntmp-w-772 syntmp-mod-774))))) (begin (if (eq? syntmp-m-752 (quote c&e)) (syntmp-top-level-eval-hook-89 syntmp-x-807 syntmp-mod-774)) syntmp-x-807)) (if (memv syntmp-t-806 (quote (displaced-lexical))) (syntax-error (syntmp-wrap-145 syntmp-value-770 syntmp-w-772 #f) "identifier out of context") (if (eq? syntmp-type-805 (quote external-macro)) (let ((syntmp-x-808 (syntmp-build-annotated-94 syntmp-s-773 (list (quote define) syntmp-n-804 (syntmp-chi-153 syntmp-e-771 syntmp-r-750 syntmp-w-772 syntmp-mod-774))))) (begin (if (eq? syntmp-m-752 (quote c&e)) (syntmp-top-level-eval-hook-89 syntmp-x-808 syntmp-mod-774)) syntmp-x-808)) (syntax-error (syntmp-wrap-145 syntmp-value-770 syntmp-w-772 #f) "cannot define keyword at top level"))))))) (let ((syntmp-x-809 (syntmp-chi-expr-154 syntmp-type-769 syntmp-value-770 syntmp-e-771 syntmp-r-750 syntmp-w-772 syntmp-s-773 syntmp-mod-774))) (begin (if (eq? syntmp-m-752 (quote c&e)) (syntmp-top-level-eval-hook-89 syntmp-x-809 syntmp-mod-774)) syntmp-x-809)))))))))))) (syntmp-syntax-type-151 (lambda (syntmp-e-810 syntmp-r-811 syntmp-w-812 syntmp-s-813 syntmp-rib-814 syntmp-mod-815) (cond ((symbol? syntmp-e-810) (let ((syntmp-n-816 (syntmp-id-var-name-139 syntmp-e-810 syntmp-w-812))) (let ((syntmp-b-817 (syntmp-lookup-114 syntmp-n-816 syntmp-r-811))) (let ((syntmp-type-818 (syntmp-binding-type-109 syntmp-b-817))) (let ((syntmp-t-819 syntmp-type-818)) (if (memv syntmp-t-819 (quote (lexical))) (values syntmp-type-818 (syntmp-binding-value-110 syntmp-b-817) syntmp-e-810 syntmp-w-812 syntmp-s-813 #f) (if (memv syntmp-t-819 (quote (global))) (values syntmp-type-818 syntmp-n-816 syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815) (if (memv syntmp-t-819 (quote (macro))) (syntmp-syntax-type-151 (syntmp-chi-macro-156 (syntmp-binding-value-110 syntmp-b-817) syntmp-e-810 syntmp-r-811 syntmp-w-812 syntmp-rib-814 syntmp-mod-815) syntmp-r-811 (quote (())) syntmp-s-813 syntmp-rib-814 syntmp-mod-815) (values syntmp-type-818 (syntmp-binding-value-110 syntmp-b-817) syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815))))))))) ((pair? syntmp-e-810) (let ((syntmp-first-820 (car syntmp-e-810))) (if (syntmp-id?-117 syntmp-first-820) (let ((syntmp-n-821 (syntmp-id-var-name-139 syntmp-first-820 syntmp-w-812))) (let ((syntmp-b-822 (syntmp-lookup-114 syntmp-n-821 syntmp-r-811))) (let ((syntmp-type-823 (syntmp-binding-type-109 syntmp-b-822))) (let ((syntmp-t-824 syntmp-type-823)) (if (memv syntmp-t-824 (quote (lexical))) (values (quote lexical-call) (syntmp-binding-value-110 syntmp-b-822) syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815) (if (memv syntmp-t-824 (quote (global))) (values (quote global-call) syntmp-n-821 syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815) (if (memv syntmp-t-824 (quote (macro))) (syntmp-syntax-type-151 (syntmp-chi-macro-156 (syntmp-binding-value-110 syntmp-b-822) syntmp-e-810 syntmp-r-811 syntmp-w-812 syntmp-rib-814 syntmp-mod-815) syntmp-r-811 (quote (())) syntmp-s-813 syntmp-rib-814 syntmp-mod-815) (if (memv syntmp-t-824 (quote (core external-macro))) (values syntmp-type-823 (syntmp-binding-value-110 syntmp-b-822) syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815) (if (memv syntmp-t-824 (quote (local-syntax))) (values (quote local-syntax-form) (syntmp-binding-value-110 syntmp-b-822) syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815) (if (memv syntmp-t-824 (quote (begin))) (values (quote begin-form) #f syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815) (if (memv syntmp-t-824 (quote (eval-when))) (values (quote eval-when-form) #f syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815) (if (memv syntmp-t-824 (quote (define))) ((lambda (syntmp-tmp-825) ((lambda (syntmp-tmp-826) (if (if syntmp-tmp-826 (apply (lambda (syntmp-_-827 syntmp-name-828 syntmp-val-829) (syntmp-id?-117 syntmp-name-828)) syntmp-tmp-826) #f) (apply (lambda (syntmp-_-830 syntmp-name-831 syntmp-val-832) (values (quote define-form) syntmp-name-831 syntmp-val-832 syntmp-w-812 syntmp-s-813 syntmp-mod-815)) syntmp-tmp-826) ((lambda (syntmp-tmp-833) (if (if syntmp-tmp-833 (apply (lambda (syntmp-_-834 syntmp-name-835 syntmp-args-836 syntmp-e1-837 syntmp-e2-838) (and (syntmp-id?-117 syntmp-name-835) (syntmp-valid-bound-ids?-142 (syntmp-lambda-var-list-166 syntmp-args-836)))) syntmp-tmp-833) #f) (apply (lambda (syntmp-_-839 syntmp-name-840 syntmp-args-841 syntmp-e1-842 syntmp-e2-843) (values (quote define-form) (syntmp-wrap-145 syntmp-name-840 syntmp-w-812 #f) (cons (quote #(syntax-object lambda ((top) #(ribcage #(_ name args e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(t) #(("m" top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(type) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(b) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(n) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(first) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(e r w s rib mod) #((top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f)) (syntmp-wrap-145 (cons syntmp-args-841 (cons syntmp-e1-842 syntmp-e2-843)) syntmp-w-812 syntmp-mod-815)) (quote (())) syntmp-s-813 syntmp-mod-815)) syntmp-tmp-833) ((lambda (syntmp-tmp-845) (if (if syntmp-tmp-845 (apply (lambda (syntmp-_-846 syntmp-name-847) (syntmp-id?-117 syntmp-name-847)) syntmp-tmp-845) #f) (apply (lambda (syntmp-_-848 syntmp-name-849) (values (quote define-form) (syntmp-wrap-145 syntmp-name-849 syntmp-w-812 #f) (quote (#(syntax-object void ((top) #(ribcage #(_ name) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(t) #(("m" top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(type) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(b) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(n) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(first) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(e r w s rib mod) #((top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f))) (quote (())) syntmp-s-813 syntmp-mod-815)) syntmp-tmp-845) (syntax-error syntmp-tmp-825))) (syntax-dispatch syntmp-tmp-825 (quote (any any)))))) (syntax-dispatch syntmp-tmp-825 (quote (any (any . any) any . each-any)))))) (syntax-dispatch syntmp-tmp-825 (quote (any any any))))) syntmp-e-810) (if (memv syntmp-t-824 (quote (define-syntax))) ((lambda (syntmp-tmp-850) ((lambda (syntmp-tmp-851) (if (if syntmp-tmp-851 (apply (lambda (syntmp-_-852 syntmp-name-853 syntmp-val-854) (syntmp-id?-117 syntmp-name-853)) syntmp-tmp-851) #f) (apply (lambda (syntmp-_-855 syntmp-name-856 syntmp-val-857) (values (quote define-syntax-form) syntmp-name-856 syntmp-val-857 syntmp-w-812 syntmp-s-813 syntmp-mod-815)) syntmp-tmp-851) (syntax-error syntmp-tmp-850))) (syntax-dispatch syntmp-tmp-850 (quote (any any any))))) syntmp-e-810) (values (quote call) #f syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815)))))))))))))) (values (quote call) #f syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815)))) ((syntmp-syntax-object?-101 syntmp-e-810) (syntmp-syntax-type-151 (syntmp-syntax-object-expression-102 syntmp-e-810) syntmp-r-811 (syntmp-join-wraps-136 syntmp-w-812 (syntmp-syntax-object-wrap-103 syntmp-e-810)) #f syntmp-rib-814 (syntmp-syntax-object-module-104 syntmp-e-810))) ((annotation? syntmp-e-810) (syntmp-syntax-type-151 (annotation-expression syntmp-e-810) syntmp-r-811 syntmp-w-812 (annotation-source syntmp-e-810) syntmp-rib-814 syntmp-mod-815)) ((self-evaluating? syntmp-e-810) (values (quote constant) #f syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815)) (else (values (quote other) #f syntmp-e-810 syntmp-w-812 syntmp-s-813 syntmp-mod-815))))) (syntmp-chi-when-list-150 (lambda (syntmp-e-858 syntmp-when-list-859 syntmp-w-860) (let syntmp-f-861 ((syntmp-when-list-862 syntmp-when-list-859) (syntmp-situations-863 (quote ()))) (if (null? syntmp-when-list-862) syntmp-situations-863 (syntmp-f-861 (cdr syntmp-when-list-862) (cons (let ((syntmp-x-864 (car syntmp-when-list-862))) (cond ((syntmp-free-id=?-140 syntmp-x-864 (quote #(syntax-object compile ((top) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f when-list situations) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(e when-list w) #((top) (top) (top)) #("i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f))) (quote compile)) ((syntmp-free-id=?-140 syntmp-x-864 (quote #(syntax-object load ((top) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f when-list situations) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(e when-list w) #((top) (top) (top)) #("i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f))) (quote load)) ((syntmp-free-id=?-140 syntmp-x-864 (quote #(syntax-object eval ((top) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f when-list situations) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(e when-list w) #((top) (top) (top)) #("i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f))) (quote eval)) (else (syntax-error (syntmp-wrap-145 syntmp-x-864 syntmp-w-860 #f) "invalid eval-when situation")))) syntmp-situations-863)))))) (syntmp-chi-install-global-149 (lambda (syntmp-name-876 syntmp-e-877) (syntmp-build-annotated-94 #f (list (syntmp-build-annotated-94 #f (quote install-global-transformer)) (syntmp-build-data-95 #f syntmp-name-876) syntmp-e-877)))) (syntmp-chi-top-sequence-148 (lambda (syntmp-body-878 syntmp-r-879 syntmp-w-880 syntmp-s-881 syntmp-m-882 syntmp-esew-883 syntmp-mod-884) (syntmp-build-sequence-96 syntmp-s-881 (let syntmp-dobody-885 ((syntmp-body-886 syntmp-body-878) (syntmp-r-887 syntmp-r-879) (syntmp-w-888 syntmp-w-880) (syntmp-m-889 syntmp-m-882) (syntmp-esew-890 syntmp-esew-883) (syntmp-mod-891 syntmp-mod-884)) (if (null? syntmp-body-886) (quote ()) (let ((syntmp-first-892 (syntmp-chi-top-152 (car syntmp-body-886) syntmp-r-887 syntmp-w-888 syntmp-m-889 syntmp-esew-890 syntmp-mod-891))) (cons syntmp-first-892 (syntmp-dobody-885 (cdr syntmp-body-886) syntmp-r-887 syntmp-w-888 syntmp-m-889 syntmp-esew-890 syntmp-mod-891)))))))) (syntmp-chi-sequence-147 (lambda (syntmp-body-893 syntmp-r-894 syntmp-w-895 syntmp-s-896 syntmp-mod-897) (syntmp-build-sequence-96 syntmp-s-896 (let syntmp-dobody-898 ((syntmp-body-899 syntmp-body-893) (syntmp-r-900 syntmp-r-894) (syntmp-w-901 syntmp-w-895) (syntmp-mod-902 syntmp-mod-897)) (if (null? syntmp-body-899) (quote ()) (let ((syntmp-first-903 (syntmp-chi-153 (car syntmp-body-899) syntmp-r-900 syntmp-w-901 syntmp-mod-902))) (cons syntmp-first-903 (syntmp-dobody-898 (cdr syntmp-body-899) syntmp-r-900 syntmp-w-901 syntmp-mod-902)))))))) (syntmp-source-wrap-146 (lambda (syntmp-x-904 syntmp-w-905 syntmp-s-906 syntmp-defmod-907) (syntmp-wrap-145 (if syntmp-s-906 (make-annotation syntmp-x-904 syntmp-s-906 #f) syntmp-x-904) syntmp-w-905 syntmp-defmod-907))) (syntmp-wrap-145 (lambda (syntmp-x-908 syntmp-w-909 syntmp-defmod-910) (cond ((and (null? (syntmp-wrap-marks-120 syntmp-w-909)) (null? (syntmp-wrap-subst-121 syntmp-w-909))) syntmp-x-908) ((syntmp-syntax-object?-101 syntmp-x-908) (syntmp-make-syntax-object-100 (syntmp-syntax-object-expression-102 syntmp-x-908) (syntmp-join-wraps-136 syntmp-w-909 (syntmp-syntax-object-wrap-103 syntmp-x-908)) (syntmp-syntax-object-module-104 syntmp-x-908))) ((null? syntmp-x-908) syntmp-x-908) (else (syntmp-make-syntax-object-100 syntmp-x-908 syntmp-w-909 syntmp-defmod-910))))) (syntmp-bound-id-member?-144 (lambda (syntmp-x-911 syntmp-list-912) (and (not (null? syntmp-list-912)) (or (syntmp-bound-id=?-141 syntmp-x-911 (car syntmp-list-912)) (syntmp-bound-id-member?-144 syntmp-x-911 (cdr syntmp-list-912)))))) (syntmp-distinct-bound-ids?-143 (lambda (syntmp-ids-913) (let syntmp-distinct?-914 ((syntmp-ids-915 syntmp-ids-913)) (or (null? syntmp-ids-915) (and (not (syntmp-bound-id-member?-144 (car syntmp-ids-915) (cdr syntmp-ids-915))) (syntmp-distinct?-914 (cdr syntmp-ids-915))))))) (syntmp-valid-bound-ids?-142 (lambda (syntmp-ids-916) (and (let syntmp-all-ids?-917 ((syntmp-ids-918 syntmp-ids-916)) (or (null? syntmp-ids-918) (and (syntmp-id?-117 (car syntmp-ids-918)) (syntmp-all-ids?-917 (cdr syntmp-ids-918))))) (syntmp-distinct-bound-ids?-143 syntmp-ids-916)))) (syntmp-bound-id=?-141 (lambda (syntmp-i-919 syntmp-j-920) (if (and (syntmp-syntax-object?-101 syntmp-i-919) (syntmp-syntax-object?-101 syntmp-j-920)) (and (eq? (let ((syntmp-e-921 (syntmp-syntax-object-expression-102 syntmp-i-919))) (if (annotation? syntmp-e-921) (annotation-expression syntmp-e-921) syntmp-e-921)) (let ((syntmp-e-922 (syntmp-syntax-object-expression-102 syntmp-j-920))) (if (annotation? syntmp-e-922) (annotation-expression syntmp-e-922) syntmp-e-922))) (syntmp-same-marks?-138 (syntmp-wrap-marks-120 (syntmp-syntax-object-wrap-103 syntmp-i-919)) (syntmp-wrap-marks-120 (syntmp-syntax-object-wrap-103 syntmp-j-920)))) (eq? (let ((syntmp-e-923 syntmp-i-919)) (if (annotation? syntmp-e-923) (annotation-expression syntmp-e-923) syntmp-e-923)) (let ((syntmp-e-924 syntmp-j-920)) (if (annotation? syntmp-e-924) (annotation-expression syntmp-e-924) syntmp-e-924)))))) (syntmp-free-id=?-140 (lambda (syntmp-i-925 syntmp-j-926) (and (eq? (let ((syntmp-x-927 syntmp-i-925)) (let ((syntmp-e-928 (if (syntmp-syntax-object?-101 syntmp-x-927) (syntmp-syntax-object-expression-102 syntmp-x-927) syntmp-x-927))) (if (annotation? syntmp-e-928) (annotation-expression syntmp-e-928) syntmp-e-928))) (let ((syntmp-x-929 syntmp-j-926)) (let ((syntmp-e-930 (if (syntmp-syntax-object?-101 syntmp-x-929) (syntmp-syntax-object-expression-102 syntmp-x-929) syntmp-x-929))) (if (annotation? syntmp-e-930) (annotation-expression syntmp-e-930) syntmp-e-930)))) (eq? (syntmp-id-var-name-139 syntmp-i-925 (quote (()))) (syntmp-id-var-name-139 syntmp-j-926 (quote (()))))))) (syntmp-id-var-name-139 (lambda (syntmp-id-931 syntmp-w-932) (letrec ((syntmp-search-vector-rib-935 (lambda (syntmp-sym-946 syntmp-subst-947 syntmp-marks-948 syntmp-symnames-949 syntmp-ribcage-950) (let ((syntmp-n-951 (vector-length syntmp-symnames-949))) (let syntmp-f-952 ((syntmp-i-953 0)) (cond ((syntmp-fx=-87 syntmp-i-953 syntmp-n-951) (syntmp-search-933 syntmp-sym-946 (cdr syntmp-subst-947) syntmp-marks-948)) ((and (eq? (vector-ref syntmp-symnames-949 syntmp-i-953) syntmp-sym-946) (syntmp-same-marks?-138 syntmp-marks-948 (vector-ref (syntmp-ribcage-marks-127 syntmp-ribcage-950) syntmp-i-953))) (values (vector-ref (syntmp-ribcage-labels-128 syntmp-ribcage-950) syntmp-i-953) syntmp-marks-948)) (else (syntmp-f-952 (syntmp-fx+-85 syntmp-i-953 1)))))))) (syntmp-search-list-rib-934 (lambda (syntmp-sym-954 syntmp-subst-955 syntmp-marks-956 syntmp-symnames-957 syntmp-ribcage-958) (let syntmp-f-959 ((syntmp-symnames-960 syntmp-symnames-957) (syntmp-i-961 0)) (cond ((null? syntmp-symnames-960) (syntmp-search-933 syntmp-sym-954 (cdr syntmp-subst-955) syntmp-marks-956)) ((and (eq? (car syntmp-symnames-960) syntmp-sym-954) (syntmp-same-marks?-138 syntmp-marks-956 (list-ref (syntmp-ribcage-marks-127 syntmp-ribcage-958) syntmp-i-961))) (values (list-ref (syntmp-ribcage-labels-128 syntmp-ribcage-958) syntmp-i-961) syntmp-marks-956)) (else (syntmp-f-959 (cdr syntmp-symnames-960) (syntmp-fx+-85 syntmp-i-961 1))))))) (syntmp-search-933 (lambda (syntmp-sym-962 syntmp-subst-963 syntmp-marks-964) (if (null? syntmp-subst-963) (values #f syntmp-marks-964) (let ((syntmp-fst-965 (car syntmp-subst-963))) (if (eq? syntmp-fst-965 (quote shift)) (syntmp-search-933 syntmp-sym-962 (cdr syntmp-subst-963) (cdr syntmp-marks-964)) (let ((syntmp-symnames-966 (syntmp-ribcage-symnames-126 syntmp-fst-965))) (if (vector? syntmp-symnames-966) (syntmp-search-vector-rib-935 syntmp-sym-962 syntmp-subst-963 syntmp-marks-964 syntmp-symnames-966 syntmp-fst-965) (syntmp-search-list-rib-934 syntmp-sym-962 syntmp-subst-963 syntmp-marks-964 syntmp-symnames-966 syntmp-fst-965))))))))) (cond ((symbol? syntmp-id-931) (or (call-with-values (lambda () (syntmp-search-933 syntmp-id-931 (syntmp-wrap-subst-121 syntmp-w-932) (syntmp-wrap-marks-120 syntmp-w-932))) (lambda (syntmp-x-968 . syntmp-ignore-967) syntmp-x-968)) syntmp-id-931)) ((syntmp-syntax-object?-101 syntmp-id-931) (let ((syntmp-id-969 (let ((syntmp-e-971 (syntmp-syntax-object-expression-102 syntmp-id-931))) (if (annotation? syntmp-e-971) (annotation-expression syntmp-e-971) syntmp-e-971))) (syntmp-w1-970 (syntmp-syntax-object-wrap-103 syntmp-id-931))) (let ((syntmp-marks-972 (syntmp-join-marks-137 (syntmp-wrap-marks-120 syntmp-w-932) (syntmp-wrap-marks-120 syntmp-w1-970)))) (call-with-values (lambda () (syntmp-search-933 syntmp-id-969 (syntmp-wrap-subst-121 syntmp-w-932) syntmp-marks-972)) (lambda (syntmp-new-id-973 syntmp-marks-974) (or syntmp-new-id-973 (call-with-values (lambda () (syntmp-search-933 syntmp-id-969 (syntmp-wrap-subst-121 syntmp-w1-970) syntmp-marks-974)) (lambda (syntmp-x-976 . syntmp-ignore-975) syntmp-x-976)) syntmp-id-969)))))) ((annotation? syntmp-id-931) (let ((syntmp-id-977 (let ((syntmp-e-978 syntmp-id-931)) (if (annotation? syntmp-e-978) (annotation-expression syntmp-e-978) syntmp-e-978)))) (or (call-with-values (lambda () (syntmp-search-933 syntmp-id-977 (syntmp-wrap-subst-121 syntmp-w-932) (syntmp-wrap-marks-120 syntmp-w-932))) (lambda (syntmp-x-980 . syntmp-ignore-979) syntmp-x-980)) syntmp-id-977))) (else (syntmp-error-hook-91 (quote id-var-name) "invalid id" syntmp-id-931)))))) (syntmp-same-marks?-138 (lambda (syntmp-x-981 syntmp-y-982) (or (eq? syntmp-x-981 syntmp-y-982) (and (not (null? syntmp-x-981)) (not (null? syntmp-y-982)) (eq? (car syntmp-x-981) (car syntmp-y-982)) (syntmp-same-marks?-138 (cdr syntmp-x-981) (cdr syntmp-y-982)))))) (syntmp-join-marks-137 (lambda (syntmp-m1-983 syntmp-m2-984) (syntmp-smart-append-135 syntmp-m1-983 syntmp-m2-984))) (syntmp-join-wraps-136 (lambda (syntmp-w1-985 syntmp-w2-986) (let ((syntmp-m1-987 (syntmp-wrap-marks-120 syntmp-w1-985)) (syntmp-s1-988 (syntmp-wrap-subst-121 syntmp-w1-985))) (if (null? syntmp-m1-987) (if (null? syntmp-s1-988) syntmp-w2-986 (syntmp-make-wrap-119 (syntmp-wrap-marks-120 syntmp-w2-986) (syntmp-smart-append-135 syntmp-s1-988 (syntmp-wrap-subst-121 syntmp-w2-986)))) (syntmp-make-wrap-119 (syntmp-smart-append-135 syntmp-m1-987 (syntmp-wrap-marks-120 syntmp-w2-986)) (syntmp-smart-append-135 syntmp-s1-988 (syntmp-wrap-subst-121 syntmp-w2-986))))))) (syntmp-smart-append-135 (lambda (syntmp-m1-989 syntmp-m2-990) (if (null? syntmp-m2-990) syntmp-m1-989 (append syntmp-m1-989 syntmp-m2-990)))) (syntmp-make-binding-wrap-134 (lambda (syntmp-ids-991 syntmp-labels-992 syntmp-w-993) (if (null? syntmp-ids-991) syntmp-w-993 (syntmp-make-wrap-119 (syntmp-wrap-marks-120 syntmp-w-993) (cons (let ((syntmp-labelvec-994 (list->vector syntmp-labels-992))) (let ((syntmp-n-995 (vector-length syntmp-labelvec-994))) (let ((syntmp-symnamevec-996 (make-vector syntmp-n-995)) (syntmp-marksvec-997 (make-vector syntmp-n-995))) (begin (let syntmp-f-998 ((syntmp-ids-999 syntmp-ids-991) (syntmp-i-1000 0)) (if (not (null? syntmp-ids-999)) (call-with-values (lambda () (syntmp-id-sym-name&marks-118 (car syntmp-ids-999) syntmp-w-993)) (lambda (syntmp-symname-1001 syntmp-marks-1002) (begin (vector-set! syntmp-symnamevec-996 syntmp-i-1000 syntmp-symname-1001) (vector-set! syntmp-marksvec-997 syntmp-i-1000 syntmp-marks-1002) (syntmp-f-998 (cdr syntmp-ids-999) (syntmp-fx+-85 syntmp-i-1000 1))))))) (syntmp-make-ribcage-124 syntmp-symnamevec-996 syntmp-marksvec-997 syntmp-labelvec-994))))) (syntmp-wrap-subst-121 syntmp-w-993)))))) (syntmp-extend-ribcage!-133 (lambda (syntmp-ribcage-1003 syntmp-id-1004 syntmp-label-1005) (begin (syntmp-set-ribcage-symnames!-129 syntmp-ribcage-1003 (cons (let ((syntmp-e-1006 (syntmp-syntax-object-expression-102 syntmp-id-1004))) (if (annotation? syntmp-e-1006) (annotation-expression syntmp-e-1006) syntmp-e-1006)) (syntmp-ribcage-symnames-126 syntmp-ribcage-1003))) (syntmp-set-ribcage-marks!-130 syntmp-ribcage-1003 (cons (syntmp-wrap-marks-120 (syntmp-syntax-object-wrap-103 syntmp-id-1004)) (syntmp-ribcage-marks-127 syntmp-ribcage-1003))) (syntmp-set-ribcage-labels!-131 syntmp-ribcage-1003 (cons syntmp-label-1005 (syntmp-ribcage-labels-128 syntmp-ribcage-1003)))))) (syntmp-anti-mark-132 (lambda (syntmp-w-1007) (syntmp-make-wrap-119 (cons #f (syntmp-wrap-marks-120 syntmp-w-1007)) (cons (quote shift) (syntmp-wrap-subst-121 syntmp-w-1007))))) (syntmp-set-ribcage-labels!-131 (lambda (syntmp-x-1008 syntmp-update-1009) (vector-set! syntmp-x-1008 3 syntmp-update-1009))) (syntmp-set-ribcage-marks!-130 (lambda (syntmp-x-1010 syntmp-update-1011) (vector-set! syntmp-x-1010 2 syntmp-update-1011))) (syntmp-set-ribcage-symnames!-129 (lambda (syntmp-x-1012 syntmp-update-1013) (vector-set! syntmp-x-1012 1 syntmp-update-1013))) (syntmp-ribcage-labels-128 (lambda (syntmp-x-1014) (vector-ref syntmp-x-1014 3))) (syntmp-ribcage-marks-127 (lambda (syntmp-x-1015) (vector-ref syntmp-x-1015 2))) (syntmp-ribcage-symnames-126 (lambda (syntmp-x-1016) (vector-ref syntmp-x-1016 1))) (syntmp-ribcage?-125 (lambda (syntmp-x-1017) (and (vector? syntmp-x-1017) (= (vector-length syntmp-x-1017) 4) (eq? (vector-ref syntmp-x-1017 0) (quote ribcage))))) (syntmp-make-ribcage-124 (lambda (syntmp-symnames-1018 syntmp-marks-1019 syntmp-labels-1020) (vector (quote ribcage) syntmp-symnames-1018 syntmp-marks-1019 syntmp-labels-1020))) (syntmp-gen-labels-123 (lambda (syntmp-ls-1021) (if (null? syntmp-ls-1021) (quote ()) (cons (syntmp-gen-label-122) (syntmp-gen-labels-123 (cdr syntmp-ls-1021)))))) (syntmp-gen-label-122 (lambda () (string #\i))) (syntmp-wrap-subst-121 cdr) (syntmp-wrap-marks-120 car) (syntmp-make-wrap-119 cons) (syntmp-id-sym-name&marks-118 (lambda (syntmp-x-1022 syntmp-w-1023) (if (syntmp-syntax-object?-101 syntmp-x-1022) (values (let ((syntmp-e-1024 (syntmp-syntax-object-expression-102 syntmp-x-1022))) (if (annotation? syntmp-e-1024) (annotation-expression syntmp-e-1024) syntmp-e-1024)) (syntmp-join-marks-137 (syntmp-wrap-marks-120 syntmp-w-1023) (syntmp-wrap-marks-120 (syntmp-syntax-object-wrap-103 syntmp-x-1022)))) (values (let ((syntmp-e-1025 syntmp-x-1022)) (if (annotation? syntmp-e-1025) (annotation-expression syntmp-e-1025) syntmp-e-1025)) (syntmp-wrap-marks-120 syntmp-w-1023))))) (syntmp-id?-117 (lambda (syntmp-x-1026) (cond ((symbol? syntmp-x-1026) #t) ((syntmp-syntax-object?-101 syntmp-x-1026) (symbol? (let ((syntmp-e-1027 (syntmp-syntax-object-expression-102 syntmp-x-1026))) (if (annotation? syntmp-e-1027) (annotation-expression syntmp-e-1027) syntmp-e-1027)))) ((annotation? syntmp-x-1026) (symbol? (annotation-expression syntmp-x-1026))) (else #f)))) (syntmp-nonsymbol-id?-116 (lambda (syntmp-x-1028) (and (syntmp-syntax-object?-101 syntmp-x-1028) (symbol? (let ((syntmp-e-1029 (syntmp-syntax-object-expression-102 syntmp-x-1028))) (if (annotation? syntmp-e-1029) (annotation-expression syntmp-e-1029) syntmp-e-1029)))))) (syntmp-global-extend-115 (lambda (syntmp-type-1030 syntmp-sym-1031 syntmp-val-1032) (syntmp-put-global-definition-hook-92 syntmp-sym-1031 (cons syntmp-type-1030 syntmp-val-1032)))) (syntmp-lookup-114 (lambda (syntmp-x-1033 syntmp-r-1034) (cond ((assq syntmp-x-1033 syntmp-r-1034) => cdr) ((symbol? syntmp-x-1033) (or (syntmp-get-global-definition-hook-93 syntmp-x-1033) (quote (global)))) (else (quote (displaced-lexical)))))) (syntmp-macros-only-env-113 (lambda (syntmp-r-1035) (if (null? syntmp-r-1035) (quote ()) (let ((syntmp-a-1036 (car syntmp-r-1035))) (if (eq? (cadr syntmp-a-1036) (quote macro)) (cons syntmp-a-1036 (syntmp-macros-only-env-113 (cdr syntmp-r-1035))) (syntmp-macros-only-env-113 (cdr syntmp-r-1035))))))) (syntmp-extend-var-env-112 (lambda (syntmp-labels-1037 syntmp-vars-1038 syntmp-r-1039) (if (null? syntmp-labels-1037) syntmp-r-1039 (syntmp-extend-var-env-112 (cdr syntmp-labels-1037) (cdr syntmp-vars-1038) (cons (cons (car syntmp-labels-1037) (cons (quote lexical) (car syntmp-vars-1038))) syntmp-r-1039))))) (syntmp-extend-env-111 (lambda (syntmp-labels-1040 syntmp-bindings-1041 syntmp-r-1042) (if (null? syntmp-labels-1040) syntmp-r-1042 (syntmp-extend-env-111 (cdr syntmp-labels-1040) (cdr syntmp-bindings-1041) (cons (cons (car syntmp-labels-1040) (car syntmp-bindings-1041)) syntmp-r-1042))))) (syntmp-binding-value-110 cdr) (syntmp-binding-type-109 car) (syntmp-source-annotation-108 (lambda (syntmp-x-1043) (cond ((annotation? syntmp-x-1043) (annotation-source syntmp-x-1043)) ((syntmp-syntax-object?-101 syntmp-x-1043) (syntmp-source-annotation-108 (syntmp-syntax-object-expression-102 syntmp-x-1043))) (else #f)))) (syntmp-set-syntax-object-module!-107 (lambda (syntmp-x-1044 syntmp-update-1045) (vector-set! syntmp-x-1044 3 syntmp-update-1045))) (syntmp-set-syntax-object-wrap!-106 (lambda (syntmp-x-1046 syntmp-update-1047) (vector-set! syntmp-x-1046 2 syntmp-update-1047))) (syntmp-set-syntax-object-expression!-105 (lambda (syntmp-x-1048 syntmp-update-1049) (vector-set! syntmp-x-1048 1 syntmp-update-1049))) (syntmp-syntax-object-module-104 (lambda (syntmp-x-1050) (vector-ref syntmp-x-1050 3))) (syntmp-syntax-object-wrap-103 (lambda (syntmp-x-1051) (vector-ref syntmp-x-1051 2))) (syntmp-syntax-object-expression-102 (lambda (syntmp-x-1052) (vector-ref syntmp-x-1052 1))) (syntmp-syntax-object?-101 (lambda (syntmp-x-1053) (and (vector? syntmp-x-1053) (= (vector-length syntmp-x-1053) 4) (eq? (vector-ref syntmp-x-1053 0) (quote syntax-object))))) (syntmp-make-syntax-object-100 (lambda (syntmp-expression-1054 syntmp-wrap-1055 syntmp-module-1056) (vector (quote syntax-object) syntmp-expression-1054 syntmp-wrap-1055 syntmp-module-1056))) (syntmp-build-letrec-99 (lambda (syntmp-src-1057 syntmp-vars-1058 syntmp-val-exps-1059 syntmp-body-exp-1060) (if (null? syntmp-vars-1058) (syntmp-build-annotated-94 syntmp-src-1057 syntmp-body-exp-1060) (syntmp-build-annotated-94 syntmp-src-1057 (list (quote letrec) (map list syntmp-vars-1058 syntmp-val-exps-1059) syntmp-body-exp-1060))))) (syntmp-build-named-let-98 (lambda (syntmp-src-1061 syntmp-vars-1062 syntmp-val-exps-1063 syntmp-body-exp-1064) (if (null? syntmp-vars-1062) (syntmp-build-annotated-94 syntmp-src-1061 syntmp-body-exp-1064) (syntmp-build-annotated-94 syntmp-src-1061 (list (quote let) (car syntmp-vars-1062) (map list (cdr syntmp-vars-1062) syntmp-val-exps-1063) syntmp-body-exp-1064))))) (syntmp-build-let-97 (lambda (syntmp-src-1065 syntmp-vars-1066 syntmp-val-exps-1067 syntmp-body-exp-1068) (if (null? syntmp-vars-1066) (syntmp-build-annotated-94 syntmp-src-1065 syntmp-body-exp-1068) (syntmp-build-annotated-94 syntmp-src-1065 (list (quote let) (map list syntmp-vars-1066 syntmp-val-exps-1067) syntmp-body-exp-1068))))) (syntmp-build-sequence-96 (lambda (syntmp-src-1069 syntmp-exps-1070) (if (null? (cdr syntmp-exps-1070)) (syntmp-build-annotated-94 syntmp-src-1069 (car syntmp-exps-1070)) (syntmp-build-annotated-94 syntmp-src-1069 (cons (quote begin) syntmp-exps-1070))))) (syntmp-build-data-95 (lambda (syntmp-src-1071 syntmp-exp-1072) (if (and (self-evaluating? syntmp-exp-1072) (not (vector? syntmp-exp-1072))) (syntmp-build-annotated-94 syntmp-src-1071 syntmp-exp-1072) (syntmp-build-annotated-94 syntmp-src-1071 (list (quote quote) syntmp-exp-1072))))) (syntmp-build-annotated-94 (lambda (syntmp-src-1073 syntmp-exp-1074) (if (and syntmp-src-1073 (not (annotation? syntmp-exp-1074))) (make-annotation syntmp-exp-1074 syntmp-src-1073 #t) syntmp-exp-1074))) (syntmp-get-global-definition-hook-93 (lambda (syntmp-symbol-1075) (getprop syntmp-symbol-1075 (quote *sc-expander*)))) (syntmp-put-global-definition-hook-92 (lambda (syntmp-symbol-1076 syntmp-binding-1077) (putprop syntmp-symbol-1076 (quote *sc-expander*) syntmp-binding-1077))) (syntmp-error-hook-91 (lambda (syntmp-who-1078 syntmp-why-1079 syntmp-what-1080) (error syntmp-who-1078 "~a ~s" syntmp-why-1079 syntmp-what-1080))) (syntmp-local-eval-hook-90 (lambda (syntmp-x-1081 syntmp-mod-1082) (eval (list syntmp-noexpand-84 syntmp-x-1081) (or syntmp-mod-1082 (interaction-environment))))) (syntmp-top-level-eval-hook-89 (lambda (syntmp-x-1083 syntmp-mod-1084) (eval (list syntmp-noexpand-84 syntmp-x-1083) (or syntmp-mod-1084 (interaction-environment))))) (syntmp-fx<-88 <) (syntmp-fx=-87 =) (syntmp-fx--86 -) (syntmp-fx+-85 +) (syntmp-noexpand-84 "noexpand")) (begin (syntmp-global-extend-115 (quote local-syntax) (quote letrec-syntax) #t) (syntmp-global-extend-115 (quote local-syntax) (quote let-syntax) #f) (syntmp-global-extend-115 (quote core) (quote fluid-let-syntax) (lambda (syntmp-e-1085 syntmp-r-1086 syntmp-w-1087 syntmp-s-1088 syntmp-mod-1089) ((lambda (syntmp-tmp-1090) ((lambda (syntmp-tmp-1091) (if (if syntmp-tmp-1091 (apply (lambda (syntmp-_-1092 syntmp-var-1093 syntmp-val-1094 syntmp-e1-1095 syntmp-e2-1096) (syntmp-valid-bound-ids?-142 syntmp-var-1093)) syntmp-tmp-1091) #f) (apply (lambda (syntmp-_-1098 syntmp-var-1099 syntmp-val-1100 syntmp-e1-1101 syntmp-e2-1102) (let ((syntmp-names-1103 (map (lambda (syntmp-x-1104) (syntmp-id-var-name-139 syntmp-x-1104 syntmp-w-1087)) syntmp-var-1099))) (begin (for-each (lambda (syntmp-id-1106 syntmp-n-1107) (let ((syntmp-t-1108 (syntmp-binding-type-109 (syntmp-lookup-114 syntmp-n-1107 syntmp-r-1086)))) (if (memv syntmp-t-1108 (quote (displaced-lexical))) (syntax-error (syntmp-source-wrap-146 syntmp-id-1106 syntmp-w-1087 syntmp-s-1088 syntmp-mod-1089) "identifier out of context")))) syntmp-var-1099 syntmp-names-1103) (syntmp-chi-body-157 (cons syntmp-e1-1101 syntmp-e2-1102) (syntmp-source-wrap-146 syntmp-e-1085 syntmp-w-1087 syntmp-s-1088 syntmp-mod-1089) (syntmp-extend-env-111 syntmp-names-1103 (let ((syntmp-trans-r-1111 (syntmp-macros-only-env-113 syntmp-r-1086))) (map (lambda (syntmp-x-1112) (cons (quote macro) (syntmp-eval-local-transformer-160 (syntmp-chi-153 syntmp-x-1112 syntmp-trans-r-1111 syntmp-w-1087 syntmp-mod-1089) syntmp-mod-1089))) syntmp-val-1100)) syntmp-r-1086) syntmp-w-1087 syntmp-mod-1089)))) syntmp-tmp-1091) ((lambda (syntmp-_-1114) (syntax-error (syntmp-source-wrap-146 syntmp-e-1085 syntmp-w-1087 syntmp-s-1088 syntmp-mod-1089))) syntmp-tmp-1090))) (syntax-dispatch syntmp-tmp-1090 (quote (any #(each (any any)) any . each-any))))) syntmp-e-1085))) (syntmp-global-extend-115 (quote core) (quote quote) (lambda (syntmp-e-1115 syntmp-r-1116 syntmp-w-1117 syntmp-s-1118 syntmp-mod-1119) ((lambda (syntmp-tmp-1120) ((lambda (syntmp-tmp-1121) (if syntmp-tmp-1121 (apply (lambda (syntmp-_-1122 syntmp-e-1123) (syntmp-build-data-95 syntmp-s-1118 (syntmp-strip-164 syntmp-e-1123 syntmp-w-1117))) syntmp-tmp-1121) ((lambda (syntmp-_-1124) (syntax-error (syntmp-source-wrap-146 syntmp-e-1115 syntmp-w-1117 syntmp-s-1118 syntmp-mod-1119))) syntmp-tmp-1120))) (syntax-dispatch syntmp-tmp-1120 (quote (any any))))) syntmp-e-1115))) (syntmp-global-extend-115 (quote core) (quote syntax) (letrec ((syntmp-regen-1132 (lambda (syntmp-x-1133) (let ((syntmp-t-1134 (car syntmp-x-1133))) (if (memv syntmp-t-1134 (quote (ref))) (syntmp-build-annotated-94 #f (cadr syntmp-x-1133)) (if (memv syntmp-t-1134 (quote (primitive))) (syntmp-build-annotated-94 #f (cadr syntmp-x-1133)) (if (memv syntmp-t-1134 (quote (quote))) (syntmp-build-data-95 #f (cadr syntmp-x-1133)) (if (memv syntmp-t-1134 (quote (lambda))) (syntmp-build-annotated-94 #f (list (quote lambda) (cadr syntmp-x-1133) (syntmp-regen-1132 (caddr syntmp-x-1133)))) (if (memv syntmp-t-1134 (quote (map))) (let ((syntmp-ls-1135 (map syntmp-regen-1132 (cdr syntmp-x-1133)))) (syntmp-build-annotated-94 #f (cons (if (syntmp-fx=-87 (length syntmp-ls-1135) 2) (syntmp-build-annotated-94 #f (quote map)) (syntmp-build-annotated-94 #f (quote map))) syntmp-ls-1135))) (syntmp-build-annotated-94 #f (cons (syntmp-build-annotated-94 #f (car syntmp-x-1133)) (map syntmp-regen-1132 (cdr syntmp-x-1133)))))))))))) (syntmp-gen-vector-1131 (lambda (syntmp-x-1136) (cond ((eq? (car syntmp-x-1136) (quote list)) (cons (quote vector) (cdr syntmp-x-1136))) ((eq? (car syntmp-x-1136) (quote quote)) (list (quote quote) (list->vector (cadr syntmp-x-1136)))) (else (list (quote list->vector) syntmp-x-1136))))) (syntmp-gen-append-1130 (lambda (syntmp-x-1137 syntmp-y-1138) (if (equal? syntmp-y-1138 (quote (quote ()))) syntmp-x-1137 (list (quote append) syntmp-x-1137 syntmp-y-1138)))) (syntmp-gen-cons-1129 (lambda (syntmp-x-1139 syntmp-y-1140) (let ((syntmp-t-1141 (car syntmp-y-1140))) (if (memv syntmp-t-1141 (quote (quote))) (if (eq? (car syntmp-x-1139) (quote quote)) (list (quote quote) (cons (cadr syntmp-x-1139) (cadr syntmp-y-1140))) (if (eq? (cadr syntmp-y-1140) (quote ())) (list (quote list) syntmp-x-1139) (list (quote cons) syntmp-x-1139 syntmp-y-1140))) (if (memv syntmp-t-1141 (quote (list))) (cons (quote list) (cons syntmp-x-1139 (cdr syntmp-y-1140))) (list (quote cons) syntmp-x-1139 syntmp-y-1140)))))) (syntmp-gen-map-1128 (lambda (syntmp-e-1142 syntmp-map-env-1143) (let ((syntmp-formals-1144 (map cdr syntmp-map-env-1143)) (syntmp-actuals-1145 (map (lambda (syntmp-x-1146) (list (quote ref) (car syntmp-x-1146))) syntmp-map-env-1143))) (cond ((eq? (car syntmp-e-1142) (quote ref)) (car syntmp-actuals-1145)) ((andmap (lambda (syntmp-x-1147) (and (eq? (car syntmp-x-1147) (quote ref)) (memq (cadr syntmp-x-1147) syntmp-formals-1144))) (cdr syntmp-e-1142)) (cons (quote map) (cons (list (quote primitive) (car syntmp-e-1142)) (map (let ((syntmp-r-1148 (map cons syntmp-formals-1144 syntmp-actuals-1145))) (lambda (syntmp-x-1149) (cdr (assq (cadr syntmp-x-1149) syntmp-r-1148)))) (cdr syntmp-e-1142))))) (else (cons (quote map) (cons (list (quote lambda) syntmp-formals-1144 syntmp-e-1142) syntmp-actuals-1145))))))) (syntmp-gen-mappend-1127 (lambda (syntmp-e-1150 syntmp-map-env-1151) (list (quote apply) (quote (primitive append)) (syntmp-gen-map-1128 syntmp-e-1150 syntmp-map-env-1151)))) (syntmp-gen-ref-1126 (lambda (syntmp-src-1152 syntmp-var-1153 syntmp-level-1154 syntmp-maps-1155) (if (syntmp-fx=-87 syntmp-level-1154 0) (values syntmp-var-1153 syntmp-maps-1155) (if (null? syntmp-maps-1155) (syntax-error syntmp-src-1152 "missing ellipsis in syntax form") (call-with-values (lambda () (syntmp-gen-ref-1126 syntmp-src-1152 syntmp-var-1153 (syntmp-fx--86 syntmp-level-1154 1) (cdr syntmp-maps-1155))) (lambda (syntmp-outer-var-1156 syntmp-outer-maps-1157) (let ((syntmp-b-1158 (assq syntmp-outer-var-1156 (car syntmp-maps-1155)))) (if syntmp-b-1158 (values (cdr syntmp-b-1158) syntmp-maps-1155) (let ((syntmp-inner-var-1159 (syntmp-gen-var-165 (quote tmp)))) (values syntmp-inner-var-1159 (cons (cons (cons syntmp-outer-var-1156 syntmp-inner-var-1159) (car syntmp-maps-1155)) syntmp-outer-maps-1157))))))))))) (syntmp-gen-syntax-1125 (lambda (syntmp-src-1160 syntmp-e-1161 syntmp-r-1162 syntmp-maps-1163 syntmp-ellipsis?-1164) (if (syntmp-id?-117 syntmp-e-1161) (let ((syntmp-label-1165 (syntmp-id-var-name-139 syntmp-e-1161 (quote (()))))) (let ((syntmp-b-1166 (syntmp-lookup-114 syntmp-label-1165 syntmp-r-1162))) (if (eq? (syntmp-binding-type-109 syntmp-b-1166) (quote syntax)) (call-with-values (lambda () (let ((syntmp-var.lev-1167 (syntmp-binding-value-110 syntmp-b-1166))) (syntmp-gen-ref-1126 syntmp-src-1160 (car syntmp-var.lev-1167) (cdr syntmp-var.lev-1167) syntmp-maps-1163))) (lambda (syntmp-var-1168 syntmp-maps-1169) (values (list (quote ref) syntmp-var-1168) syntmp-maps-1169))) (if (syntmp-ellipsis?-1164 syntmp-e-1161) (syntax-error syntmp-src-1160 "misplaced ellipsis in syntax form") (values (list (quote quote) syntmp-e-1161) syntmp-maps-1163))))) ((lambda (syntmp-tmp-1170) ((lambda (syntmp-tmp-1171) (if (if syntmp-tmp-1171 (apply (lambda (syntmp-dots-1172 syntmp-e-1173) (syntmp-ellipsis?-1164 syntmp-dots-1172)) syntmp-tmp-1171) #f) (apply (lambda (syntmp-dots-1174 syntmp-e-1175) (syntmp-gen-syntax-1125 syntmp-src-1160 syntmp-e-1175 syntmp-r-1162 syntmp-maps-1163 (lambda (syntmp-x-1176) #f))) syntmp-tmp-1171) ((lambda (syntmp-tmp-1177) (if (if syntmp-tmp-1177 (apply (lambda (syntmp-x-1178 syntmp-dots-1179 syntmp-y-1180) (syntmp-ellipsis?-1164 syntmp-dots-1179)) syntmp-tmp-1177) #f) (apply (lambda (syntmp-x-1181 syntmp-dots-1182 syntmp-y-1183) (let syntmp-f-1184 ((syntmp-y-1185 syntmp-y-1183) (syntmp-k-1186 (lambda (syntmp-maps-1187) (call-with-values (lambda () (syntmp-gen-syntax-1125 syntmp-src-1160 syntmp-x-1181 syntmp-r-1162 (cons (quote ()) syntmp-maps-1187) syntmp-ellipsis?-1164)) (lambda (syntmp-x-1188 syntmp-maps-1189) (if (null? (car syntmp-maps-1189)) (syntax-error syntmp-src-1160 "extra ellipsis in syntax form") (values (syntmp-gen-map-1128 syntmp-x-1188 (car syntmp-maps-1189)) (cdr syntmp-maps-1189)))))))) ((lambda (syntmp-tmp-1190) ((lambda (syntmp-tmp-1191) (if (if syntmp-tmp-1191 (apply (lambda (syntmp-dots-1192 syntmp-y-1193) (syntmp-ellipsis?-1164 syntmp-dots-1192)) syntmp-tmp-1191) #f) (apply (lambda (syntmp-dots-1194 syntmp-y-1195) (syntmp-f-1184 syntmp-y-1195 (lambda (syntmp-maps-1196) (call-with-values (lambda () (syntmp-k-1186 (cons (quote ()) syntmp-maps-1196))) (lambda (syntmp-x-1197 syntmp-maps-1198) (if (null? (car syntmp-maps-1198)) (syntax-error syntmp-src-1160 "extra ellipsis in syntax form") (values (syntmp-gen-mappend-1127 syntmp-x-1197 (car syntmp-maps-1198)) (cdr syntmp-maps-1198)))))))) syntmp-tmp-1191) ((lambda (syntmp-_-1199) (call-with-values (lambda () (syntmp-gen-syntax-1125 syntmp-src-1160 syntmp-y-1185 syntmp-r-1162 syntmp-maps-1163 syntmp-ellipsis?-1164)) (lambda (syntmp-y-1200 syntmp-maps-1201) (call-with-values (lambda () (syntmp-k-1186 syntmp-maps-1201)) (lambda (syntmp-x-1202 syntmp-maps-1203) (values (syntmp-gen-append-1130 syntmp-x-1202 syntmp-y-1200) syntmp-maps-1203)))))) syntmp-tmp-1190))) (syntax-dispatch syntmp-tmp-1190 (quote (any . any))))) syntmp-y-1185))) syntmp-tmp-1177) ((lambda (syntmp-tmp-1204) (if syntmp-tmp-1204 (apply (lambda (syntmp-x-1205 syntmp-y-1206) (call-with-values (lambda () (syntmp-gen-syntax-1125 syntmp-src-1160 syntmp-x-1205 syntmp-r-1162 syntmp-maps-1163 syntmp-ellipsis?-1164)) (lambda (syntmp-x-1207 syntmp-maps-1208) (call-with-values (lambda () (syntmp-gen-syntax-1125 syntmp-src-1160 syntmp-y-1206 syntmp-r-1162 syntmp-maps-1208 syntmp-ellipsis?-1164)) (lambda (syntmp-y-1209 syntmp-maps-1210) (values (syntmp-gen-cons-1129 syntmp-x-1207 syntmp-y-1209) syntmp-maps-1210)))))) syntmp-tmp-1204) ((lambda (syntmp-tmp-1211) (if syntmp-tmp-1211 (apply (lambda (syntmp-e1-1212 syntmp-e2-1213) (call-with-values (lambda () (syntmp-gen-syntax-1125 syntmp-src-1160 (cons syntmp-e1-1212 syntmp-e2-1213) syntmp-r-1162 syntmp-maps-1163 syntmp-ellipsis?-1164)) (lambda (syntmp-e-1215 syntmp-maps-1216) (values (syntmp-gen-vector-1131 syntmp-e-1215) syntmp-maps-1216)))) syntmp-tmp-1211) ((lambda (syntmp-_-1217) (values (list (quote quote) syntmp-e-1161) syntmp-maps-1163)) syntmp-tmp-1170))) (syntax-dispatch syntmp-tmp-1170 (quote #(vector (any . each-any))))))) (syntax-dispatch syntmp-tmp-1170 (quote (any . any)))))) (syntax-dispatch syntmp-tmp-1170 (quote (any any . any)))))) (syntax-dispatch syntmp-tmp-1170 (quote (any any))))) syntmp-e-1161))))) (lambda (syntmp-e-1218 syntmp-r-1219 syntmp-w-1220 syntmp-s-1221 syntmp-mod-1222) (let ((syntmp-e-1223 (syntmp-source-wrap-146 syntmp-e-1218 syntmp-w-1220 syntmp-s-1221 syntmp-mod-1222))) ((lambda (syntmp-tmp-1224) ((lambda (syntmp-tmp-1225) (if syntmp-tmp-1225 (apply (lambda (syntmp-_-1226 syntmp-x-1227) (call-with-values (lambda () (syntmp-gen-syntax-1125 syntmp-e-1223 syntmp-x-1227 syntmp-r-1219 (quote ()) syntmp-ellipsis?-162)) (lambda (syntmp-e-1228 syntmp-maps-1229) (syntmp-regen-1132 syntmp-e-1228)))) syntmp-tmp-1225) ((lambda (syntmp-_-1230) (syntax-error syntmp-e-1223)) syntmp-tmp-1224))) (syntax-dispatch syntmp-tmp-1224 (quote (any any))))) syntmp-e-1223))))) (syntmp-global-extend-115 (quote core) (quote lambda) (lambda (syntmp-e-1231 syntmp-r-1232 syntmp-w-1233 syntmp-s-1234 syntmp-mod-1235) ((lambda (syntmp-tmp-1236) ((lambda (syntmp-tmp-1237) (if syntmp-tmp-1237 (apply (lambda (syntmp-_-1238 syntmp-c-1239) (syntmp-chi-lambda-clause-158 (syntmp-source-wrap-146 syntmp-e-1231 syntmp-w-1233 syntmp-s-1234 syntmp-mod-1235) syntmp-c-1239 syntmp-r-1232 syntmp-w-1233 syntmp-mod-1235 (lambda (syntmp-vars-1240 syntmp-body-1241) (syntmp-build-annotated-94 syntmp-s-1234 (list (quote lambda) syntmp-vars-1240 syntmp-body-1241))))) syntmp-tmp-1237) (syntax-error syntmp-tmp-1236))) (syntax-dispatch syntmp-tmp-1236 (quote (any . any))))) syntmp-e-1231))) (syntmp-global-extend-115 (quote core) (quote let) (letrec ((syntmp-chi-let-1242 (lambda (syntmp-e-1243 syntmp-r-1244 syntmp-w-1245 syntmp-s-1246 syntmp-mod-1247 syntmp-constructor-1248 syntmp-ids-1249 syntmp-vals-1250 syntmp-exps-1251) (if (not (syntmp-valid-bound-ids?-142 syntmp-ids-1249)) (syntax-error syntmp-e-1243 "duplicate bound variable in") (let ((syntmp-labels-1252 (syntmp-gen-labels-123 syntmp-ids-1249)) (syntmp-new-vars-1253 (map syntmp-gen-var-165 syntmp-ids-1249))) (let ((syntmp-nw-1254 (syntmp-make-binding-wrap-134 syntmp-ids-1249 syntmp-labels-1252 syntmp-w-1245)) (syntmp-nr-1255 (syntmp-extend-var-env-112 syntmp-labels-1252 syntmp-new-vars-1253 syntmp-r-1244))) (syntmp-constructor-1248 syntmp-s-1246 syntmp-new-vars-1253 (map (lambda (syntmp-x-1256) (syntmp-chi-153 syntmp-x-1256 syntmp-r-1244 syntmp-w-1245 syntmp-mod-1247)) syntmp-vals-1250) (syntmp-chi-body-157 syntmp-exps-1251 (syntmp-source-wrap-146 syntmp-e-1243 syntmp-nw-1254 syntmp-s-1246 syntmp-mod-1247) syntmp-nr-1255 syntmp-nw-1254 syntmp-mod-1247)))))))) (lambda (syntmp-e-1257 syntmp-r-1258 syntmp-w-1259 syntmp-s-1260 syntmp-mod-1261) ((lambda (syntmp-tmp-1262) ((lambda (syntmp-tmp-1263) (if syntmp-tmp-1263 (apply (lambda (syntmp-_-1264 syntmp-id-1265 syntmp-val-1266 syntmp-e1-1267 syntmp-e2-1268) (syntmp-chi-let-1242 syntmp-e-1257 syntmp-r-1258 syntmp-w-1259 syntmp-s-1260 syntmp-mod-1261 syntmp-build-let-97 syntmp-id-1265 syntmp-val-1266 (cons syntmp-e1-1267 syntmp-e2-1268))) syntmp-tmp-1263) ((lambda (syntmp-tmp-1272) (if (if syntmp-tmp-1272 (apply (lambda (syntmp-_-1273 syntmp-f-1274 syntmp-id-1275 syntmp-val-1276 syntmp-e1-1277 syntmp-e2-1278) (syntmp-id?-117 syntmp-f-1274)) syntmp-tmp-1272) #f) (apply (lambda (syntmp-_-1279 syntmp-f-1280 syntmp-id-1281 syntmp-val-1282 syntmp-e1-1283 syntmp-e2-1284) (syntmp-chi-let-1242 syntmp-e-1257 syntmp-r-1258 syntmp-w-1259 syntmp-s-1260 syntmp-mod-1261 syntmp-build-named-let-98 (cons syntmp-f-1280 syntmp-id-1281) syntmp-val-1282 (cons syntmp-e1-1283 syntmp-e2-1284))) syntmp-tmp-1272) ((lambda (syntmp-_-1288) (syntax-error (syntmp-source-wrap-146 syntmp-e-1257 syntmp-w-1259 syntmp-s-1260 syntmp-mod-1261))) syntmp-tmp-1262))) (syntax-dispatch syntmp-tmp-1262 (quote (any any #(each (any any)) any . each-any)))))) (syntax-dispatch syntmp-tmp-1262 (quote (any #(each (any any)) any . each-any))))) syntmp-e-1257)))) (syntmp-global-extend-115 (quote core) (quote letrec) (lambda (syntmp-e-1289 syntmp-r-1290 syntmp-w-1291 syntmp-s-1292 syntmp-mod-1293) ((lambda (syntmp-tmp-1294) ((lambda (syntmp-tmp-1295) (if syntmp-tmp-1295 (apply (lambda (syntmp-_-1296 syntmp-id-1297 syntmp-val-1298 syntmp-e1-1299 syntmp-e2-1300) (let ((syntmp-ids-1301 syntmp-id-1297)) (if (not (syntmp-valid-bound-ids?-142 syntmp-ids-1301)) (syntax-error syntmp-e-1289 "duplicate bound variable in") (let ((syntmp-labels-1303 (syntmp-gen-labels-123 syntmp-ids-1301)) (syntmp-new-vars-1304 (map syntmp-gen-var-165 syntmp-ids-1301))) (let ((syntmp-w-1305 (syntmp-make-binding-wrap-134 syntmp-ids-1301 syntmp-labels-1303 syntmp-w-1291)) (syntmp-r-1306 (syntmp-extend-var-env-112 syntmp-labels-1303 syntmp-new-vars-1304 syntmp-r-1290))) (syntmp-build-letrec-99 syntmp-s-1292 syntmp-new-vars-1304 (map (lambda (syntmp-x-1307) (syntmp-chi-153 syntmp-x-1307 syntmp-r-1306 syntmp-w-1305 syntmp-mod-1293)) syntmp-val-1298) (syntmp-chi-body-157 (cons syntmp-e1-1299 syntmp-e2-1300) (syntmp-source-wrap-146 syntmp-e-1289 syntmp-w-1305 syntmp-s-1292 syntmp-mod-1293) syntmp-r-1306 syntmp-w-1305 syntmp-mod-1293))))))) syntmp-tmp-1295) ((lambda (syntmp-_-1310) (syntax-error (syntmp-source-wrap-146 syntmp-e-1289 syntmp-w-1291 syntmp-s-1292 syntmp-mod-1293))) syntmp-tmp-1294))) (syntax-dispatch syntmp-tmp-1294 (quote (any #(each (any any)) any . each-any))))) syntmp-e-1289))) (syntmp-global-extend-115 (quote core) (quote set!) (lambda (syntmp-e-1311 syntmp-r-1312 syntmp-w-1313 syntmp-s-1314 syntmp-mod-1315) ((lambda (syntmp-tmp-1316) ((lambda (syntmp-tmp-1317) (if (if syntmp-tmp-1317 (apply (lambda (syntmp-_-1318 syntmp-id-1319 syntmp-val-1320) (syntmp-id?-117 syntmp-id-1319)) syntmp-tmp-1317) #f) (apply (lambda (syntmp-_-1321 syntmp-id-1322 syntmp-val-1323) (let ((syntmp-val-1324 (syntmp-chi-153 syntmp-val-1323 syntmp-r-1312 syntmp-w-1313 syntmp-mod-1315)) (syntmp-n-1325 (syntmp-id-var-name-139 syntmp-id-1322 syntmp-w-1313))) (let ((syntmp-b-1326 (syntmp-lookup-114 syntmp-n-1325 syntmp-r-1312))) (let ((syntmp-t-1327 (syntmp-binding-type-109 syntmp-b-1326))) (if (memv syntmp-t-1327 (quote (lexical))) (syntmp-build-annotated-94 syntmp-s-1314 (list (quote set!) (syntmp-binding-value-110 syntmp-b-1326) syntmp-val-1324)) (if (memv syntmp-t-1327 (quote (global))) (syntmp-build-annotated-94 syntmp-s-1314 (list (quote set!) (make-module-ref #f syntmp-n-1325 syntmp-mod-1315) syntmp-val-1324)) (if (memv syntmp-t-1327 (quote (displaced-lexical))) (syntax-error (syntmp-wrap-145 syntmp-id-1322 syntmp-w-1313 #f) "identifier out of context") (syntax-error (syntmp-source-wrap-146 syntmp-e-1311 syntmp-w-1313 syntmp-s-1314 syntmp-mod-1315))))))))) syntmp-tmp-1317) ((lambda (syntmp-tmp-1328) (if syntmp-tmp-1328 (apply (lambda (syntmp-_-1329 syntmp-getter-1330 syntmp-arg-1331 syntmp-val-1332) (syntmp-build-annotated-94 syntmp-s-1314 (cons (syntmp-chi-153 (list (quote #(syntax-object setter ((top) #(ribcage #(_ getter arg val) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(e r w s mod) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f)) syntmp-getter-1330) syntmp-r-1312 syntmp-w-1313 syntmp-mod-1315) (map (lambda (syntmp-e-1333) (syntmp-chi-153 syntmp-e-1333 syntmp-r-1312 syntmp-w-1313 syntmp-mod-1315)) (append syntmp-arg-1331 (list syntmp-val-1332)))))) syntmp-tmp-1328) ((lambda (syntmp-_-1335) (syntax-error (syntmp-source-wrap-146 syntmp-e-1311 syntmp-w-1313 syntmp-s-1314 syntmp-mod-1315))) syntmp-tmp-1316))) (syntax-dispatch syntmp-tmp-1316 (quote (any (any . each-any) any)))))) (syntax-dispatch syntmp-tmp-1316 (quote (any any any))))) syntmp-e-1311))) (syntmp-global-extend-115 (quote begin) (quote begin) (quote ())) (syntmp-global-extend-115 (quote define) (quote define) (quote ())) (syntmp-global-extend-115 (quote define-syntax) (quote define-syntax) (quote ())) (syntmp-global-extend-115 (quote eval-when) (quote eval-when) (quote ())) (syntmp-global-extend-115 (quote core) (quote syntax-case) (letrec ((syntmp-gen-syntax-case-1339 (lambda (syntmp-x-1340 syntmp-keys-1341 syntmp-clauses-1342 syntmp-r-1343 syntmp-mod-1344) (if (null? syntmp-clauses-1342) (syntmp-build-annotated-94 #f (list (syntmp-build-annotated-94 #f (quote syntax-error)) syntmp-x-1340)) ((lambda (syntmp-tmp-1345) ((lambda (syntmp-tmp-1346) (if syntmp-tmp-1346 (apply (lambda (syntmp-pat-1347 syntmp-exp-1348) (if (and (syntmp-id?-117 syntmp-pat-1347) (andmap (lambda (syntmp-x-1349) (not (syntmp-free-id=?-140 syntmp-pat-1347 syntmp-x-1349))) (cons (quote #(syntax-object ... ((top) #(ribcage #(pat exp) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x keys clauses r mod) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage (gen-syntax-case gen-clause build-dispatch-call convert-pattern) ((top) (top) (top) (top)) ("i" "i" "i" "i")) #(ribcage (lambda-var-list gen-var strip strip-annotation ellipsis? chi-void eval-local-transformer chi-local-syntax chi-lambda-clause chi-body chi-macro chi-application chi-expr chi chi-top syntax-type chi-when-list chi-install-global chi-top-sequence chi-sequence source-wrap wrap bound-id-member? distinct-bound-ids? valid-bound-ids? bound-id=? free-id=? id-var-name same-marks? join-marks join-wraps smart-append make-binding-wrap extend-ribcage! make-empty-ribcage new-mark anti-mark the-anti-mark top-marked? top-wrap empty-wrap set-ribcage-labels! set-ribcage-marks! set-ribcage-symnames! ribcage-labels ribcage-marks ribcage-symnames ribcage? make-ribcage gen-labels gen-label make-rename rename-marks rename-new rename-old subst-rename? wrap-subst wrap-marks make-wrap id-sym-name&marks id-sym-name id? nonsymbol-id? global-extend lookup macros-only-env extend-var-env extend-env null-env binding-value binding-type make-binding arg-check source-annotation no-source unannotate set-syntax-object-module! set-syntax-object-wrap! set-syntax-object-expression! syntax-object-module syntax-object-wrap syntax-object-expression syntax-object? make-syntax-object build-lexical-var build-letrec build-named-let build-let build-sequence build-data build-primref build-lambda build-global-definition build-global-assignment build-global-reference build-lexical-assignment build-lexical-reference build-conditional build-application build-annotated get-global-definition-hook put-global-definition-hook gensym-hook error-hook local-eval-hook top-level-eval-hook fx< fx= fx- fx+ noexpand) ((top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top) (top)) ("i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i" "i")) #(ribcage (define-structure) ((top)) ("i"))) #f)) syntmp-keys-1341))) (let ((syntmp-labels-1350 (list (syntmp-gen-label-122))) (syntmp-var-1351 (syntmp-gen-var-165 syntmp-pat-1347))) (syntmp-build-annotated-94 #f (list (syntmp-build-annotated-94 #f (list (quote lambda) (list syntmp-var-1351) (syntmp-chi-153 syntmp-exp-1348 (syntmp-extend-env-111 syntmp-labels-1350 (list (cons (quote syntax) (cons syntmp-var-1351 0))) syntmp-r-1343) (syntmp-make-binding-wrap-134 (list syntmp-pat-1347) syntmp-labels-1350 (quote (()))) syntmp-mod-1344))) syntmp-x-1340))) (syntmp-gen-clause-1338 syntmp-x-1340 syntmp-keys-1341 (cdr syntmp-clauses-1342) syntmp-r-1343 syntmp-pat-1347 #t syntmp-exp-1348 syntmp-mod-1344))) syntmp-tmp-1346) ((lambda (syntmp-tmp-1352) (if syntmp-tmp-1352 (apply (lambda (syntmp-pat-1353 syntmp-fender-1354 syntmp-exp-1355) (syntmp-gen-clause-1338 syntmp-x-1340 syntmp-keys-1341 (cdr syntmp-clauses-1342) syntmp-r-1343 syntmp-pat-1353 syntmp-fender-1354 syntmp-exp-1355 syntmp-mod-1344)) syntmp-tmp-1352) ((lambda (syntmp-_-1356) (syntax-error (car syntmp-clauses-1342) "invalid syntax-case clause")) syntmp-tmp-1345))) (syntax-dispatch syntmp-tmp-1345 (quote (any any any)))))) (syntax-dispatch syntmp-tmp-1345 (quote (any any))))) (car syntmp-clauses-1342))))) (syntmp-gen-clause-1338 (lambda (syntmp-x-1357 syntmp-keys-1358 syntmp-clauses-1359 syntmp-r-1360 syntmp-pat-1361 syntmp-fender-1362 syntmp-exp-1363 syntmp-mod-1364) (call-with-values (lambda () (syntmp-convert-pattern-1336 syntmp-pat-1361 syntmp-keys-1358)) (lambda (syntmp-p-1365 syntmp-pvars-1366) (cond ((not (syntmp-distinct-bound-ids?-143 (map car syntmp-pvars-1366))) (syntax-error syntmp-pat-1361 "duplicate pattern variable in syntax-case pattern")) ((not (andmap (lambda (syntmp-x-1367) (not (syntmp-ellipsis?-162 (car syntmp-x-1367)))) syntmp-pvars-1366)) (syntax-error syntmp-pat-1361 "misplaced ellipsis in syntax-case pattern")) (else (let ((syntmp-y-1368 (syntmp-gen-var-165 (quote tmp)))) (syntmp-build-annotated-94 #f (list (syntmp-build-annotated-94 #f (list (quote lambda) (list syntmp-y-1368) (let ((syntmp-y-1369 (syntmp-build-annotated-94 #f syntmp-y-1368))) (syntmp-build-annotated-94 #f (list (quote if) ((lambda (syntmp-tmp-1370) ((lambda (syntmp-tmp-1371) (if syntmp-tmp-1371 (apply (lambda () syntmp-y-1369) syntmp-tmp-1371) ((lambda (syntmp-_-1372) (syntmp-build-annotated-94 #f (list (quote if) syntmp-y-1369 (syntmp-build-dispatch-call-1337 syntmp-pvars-1366 syntmp-fender-1362 syntmp-y-1369 syntmp-r-1360 syntmp-mod-1364) (syntmp-build-data-95 #f #f)))) syntmp-tmp-1370))) (syntax-dispatch syntmp-tmp-1370 (quote #(atom #t))))) syntmp-fender-1362) (syntmp-build-dispatch-call-1337 syntmp-pvars-1366 syntmp-exp-1363 syntmp-y-1369 syntmp-r-1360 syntmp-mod-1364) (syntmp-gen-syntax-case-1339 syntmp-x-1357 syntmp-keys-1358 syntmp-clauses-1359 syntmp-r-1360 syntmp-mod-1364)))))) (if (eq? syntmp-p-1365 (quote any)) (syntmp-build-annotated-94 #f (list (syntmp-build-annotated-94 #f (quote list)) syntmp-x-1357)) (syntmp-build-annotated-94 #f (list (syntmp-build-annotated-94 #f (quote syntax-dispatch)) syntmp-x-1357 (syntmp-build-data-95 #f syntmp-p-1365))))))))))))) (syntmp-build-dispatch-call-1337 (lambda (syntmp-pvars-1373 syntmp-exp-1374 syntmp-y-1375 syntmp-r-1376 syntmp-mod-1377) (let ((syntmp-ids-1378 (map car syntmp-pvars-1373)) (syntmp-levels-1379 (map cdr syntmp-pvars-1373))) (let ((syntmp-labels-1380 (syntmp-gen-labels-123 syntmp-ids-1378)) (syntmp-new-vars-1381 (map syntmp-gen-var-165 syntmp-ids-1378))) (syntmp-build-annotated-94 #f (list (syntmp-build-annotated-94 #f (quote apply)) (syntmp-build-annotated-94 #f (list (quote lambda) syntmp-new-vars-1381 (syntmp-chi-153 syntmp-exp-1374 (syntmp-extend-env-111 syntmp-labels-1380 (map (lambda (syntmp-var-1382 syntmp-level-1383) (cons (quote syntax) (cons syntmp-var-1382 syntmp-level-1383))) syntmp-new-vars-1381 (map cdr syntmp-pvars-1373)) syntmp-r-1376) (syntmp-make-binding-wrap-134 syntmp-ids-1378 syntmp-labels-1380 (quote (()))) syntmp-mod-1377))) syntmp-y-1375)))))) (syntmp-convert-pattern-1336 (lambda (syntmp-pattern-1384 syntmp-keys-1385) (let syntmp-cvt-1386 ((syntmp-p-1387 syntmp-pattern-1384) (syntmp-n-1388 0) (syntmp-ids-1389 (quote ()))) (if (syntmp-id?-117 syntmp-p-1387) (if (syntmp-bound-id-member?-144 syntmp-p-1387 syntmp-keys-1385) (values (vector (quote free-id) syntmp-p-1387) syntmp-ids-1389) (values (quote any) (cons (cons syntmp-p-1387 syntmp-n-1388) syntmp-ids-1389))) ((lambda (syntmp-tmp-1390) ((lambda (syntmp-tmp-1391) (if (if syntmp-tmp-1391 (apply (lambda (syntmp-x-1392 syntmp-dots-1393) (syntmp-ellipsis?-162 syntmp-dots-1393)) syntmp-tmp-1391) #f) (apply (lambda (syntmp-x-1394 syntmp-dots-1395) (call-with-values (lambda () (syntmp-cvt-1386 syntmp-x-1394 (syntmp-fx+-85 syntmp-n-1388 1) syntmp-ids-1389)) (lambda (syntmp-p-1396 syntmp-ids-1397) (values (if (eq? syntmp-p-1396 (quote any)) (quote each-any) (vector (quote each) syntmp-p-1396)) syntmp-ids-1397)))) syntmp-tmp-1391) ((lambda (syntmp-tmp-1398) (if syntmp-tmp-1398 (apply (lambda (syntmp-x-1399 syntmp-y-1400) (call-with-values (lambda () (syntmp-cvt-1386 syntmp-y-1400 syntmp-n-1388 syntmp-ids-1389)) (lambda (syntmp-y-1401 syntmp-ids-1402) (call-with-values (lambda () (syntmp-cvt-1386 syntmp-x-1399 syntmp-n-1388 syntmp-ids-1402)) (lambda (syntmp-x-1403 syntmp-ids-1404) (values (cons syntmp-x-1403 syntmp-y-1401) syntmp-ids-1404)))))) syntmp-tmp-1398) ((lambda (syntmp-tmp-1405) (if syntmp-tmp-1405 (apply (lambda () (values (quote ()) syntmp-ids-1389)) syntmp-tmp-1405) ((lambda (syntmp-tmp-1406) (if syntmp-tmp-1406 (apply (lambda (syntmp-x-1407) (call-with-values (lambda () (syntmp-cvt-1386 syntmp-x-1407 syntmp-n-1388 syntmp-ids-1389)) (lambda (syntmp-p-1409 syntmp-ids-1410) (values (vector (quote vector) syntmp-p-1409) syntmp-ids-1410)))) syntmp-tmp-1406) ((lambda (syntmp-x-1411) (values (vector (quote atom) (syntmp-strip-164 syntmp-p-1387 (quote (())))) syntmp-ids-1389)) syntmp-tmp-1390))) (syntax-dispatch syntmp-tmp-1390 (quote #(vector each-any)))))) (syntax-dispatch syntmp-tmp-1390 (quote ()))))) (syntax-dispatch syntmp-tmp-1390 (quote (any . any)))))) (syntax-dispatch syntmp-tmp-1390 (quote (any any))))) syntmp-p-1387)))))) (lambda (syntmp-e-1412 syntmp-r-1413 syntmp-w-1414 syntmp-s-1415 syntmp-mod-1416) (let ((syntmp-e-1417 (syntmp-source-wrap-146 syntmp-e-1412 syntmp-w-1414 syntmp-s-1415 syntmp-mod-1416))) ((lambda (syntmp-tmp-1418) ((lambda (syntmp-tmp-1419) (if syntmp-tmp-1419 (apply (lambda (syntmp-_-1420 syntmp-val-1421 syntmp-key-1422 syntmp-m-1423) (if (andmap (lambda (syntmp-x-1424) (and (syntmp-id?-117 syntmp-x-1424) (not (syntmp-ellipsis?-162 syntmp-x-1424)))) syntmp-key-1422) (let ((syntmp-x-1426 (syntmp-gen-var-165 (quote tmp)))) (syntmp-build-annotated-94 syntmp-s-1415 (list (syntmp-build-annotated-94 #f (list (quote lambda) (list syntmp-x-1426) (syntmp-gen-syntax-case-1339 (syntmp-build-annotated-94 #f syntmp-x-1426) syntmp-key-1422 syntmp-m-1423 syntmp-r-1413 syntmp-mod-1416))) (syntmp-chi-153 syntmp-val-1421 syntmp-r-1413 (quote (())) syntmp-mod-1416)))) (syntax-error syntmp-e-1417 "invalid literals list in"))) syntmp-tmp-1419) (syntax-error syntmp-tmp-1418))) (syntax-dispatch syntmp-tmp-1418 (quote (any any each-any . each-any))))) syntmp-e-1417))))) (set! sc-expand (let ((syntmp-m-1429 (quote e)) (syntmp-esew-1430 (quote (eval)))) (lambda (syntmp-x-1431) (if (and (pair? syntmp-x-1431) (equal? (car syntmp-x-1431) syntmp-noexpand-84)) (cadr syntmp-x-1431) (syntmp-chi-top-152 syntmp-x-1431 (quote ()) (quote ((top))) syntmp-m-1429 syntmp-esew-1430 (current-module)))))) (set! sc-expand3 (let ((syntmp-m-1432 (quote e)) (syntmp-esew-1433 (quote (eval)))) (lambda (syntmp-x-1435 . syntmp-rest-1434) (if (and (pair? syntmp-x-1435) (equal? (car syntmp-x-1435) syntmp-noexpand-84)) (cadr syntmp-x-1435) (syntmp-chi-top-152 syntmp-x-1435 (quote ()) (quote ((top))) (if (null? syntmp-rest-1434) syntmp-m-1432 (car syntmp-rest-1434)) (if (or (null? syntmp-rest-1434) (null? (cdr syntmp-rest-1434))) syntmp-esew-1433 (cadr syntmp-rest-1434)) (current-module)))))) (set! identifier? (lambda (syntmp-x-1436) (syntmp-nonsymbol-id?-116 syntmp-x-1436))) (set! datum->syntax-object (lambda (syntmp-id-1437 syntmp-datum-1438) (syntmp-make-syntax-object-100 syntmp-datum-1438 (syntmp-syntax-object-wrap-103 syntmp-id-1437) #f))) (set! syntax-object->datum (lambda (syntmp-x-1439) (syntmp-strip-164 syntmp-x-1439 (quote (()))))) (set! generate-temporaries (lambda (syntmp-ls-1440) (begin (let ((syntmp-x-1441 syntmp-ls-1440)) (if (not (list? syntmp-x-1441)) (syntmp-error-hook-91 (quote generate-temporaries) "invalid argument" syntmp-x-1441))) (map (lambda (syntmp-x-1442) (syntmp-wrap-145 (gensym) (quote ((top))) #f)) syntmp-ls-1440)))) (set! free-identifier=? (lambda (syntmp-x-1443 syntmp-y-1444) (begin (let ((syntmp-x-1445 syntmp-x-1443)) (if (not (syntmp-nonsymbol-id?-116 syntmp-x-1445)) (syntmp-error-hook-91 (quote free-identifier=?) "invalid argument" syntmp-x-1445))) (let ((syntmp-x-1446 syntmp-y-1444)) (if (not (syntmp-nonsymbol-id?-116 syntmp-x-1446)) (syntmp-error-hook-91 (quote free-identifier=?) "invalid argument" syntmp-x-1446))) (syntmp-free-id=?-140 syntmp-x-1443 syntmp-y-1444)))) (set! bound-identifier=? (lambda (syntmp-x-1447 syntmp-y-1448) (begin (let ((syntmp-x-1449 syntmp-x-1447)) (if (not (syntmp-nonsymbol-id?-116 syntmp-x-1449)) (syntmp-error-hook-91 (quote bound-identifier=?) "invalid argument" syntmp-x-1449))) (let ((syntmp-x-1450 syntmp-y-1448)) (if (not (syntmp-nonsymbol-id?-116 syntmp-x-1450)) (syntmp-error-hook-91 (quote bound-identifier=?) "invalid argument" syntmp-x-1450))) (syntmp-bound-id=?-141 syntmp-x-1447 syntmp-y-1448)))) (set! syntax-error (lambda (syntmp-object-1452 . syntmp-messages-1451) (begin (for-each (lambda (syntmp-x-1453) (let ((syntmp-x-1454 syntmp-x-1453)) (if (not (string? syntmp-x-1454)) (syntmp-error-hook-91 (quote syntax-error) "invalid argument" syntmp-x-1454)))) syntmp-messages-1451) (let ((syntmp-message-1455 (if (null? syntmp-messages-1451) "invalid syntax" (apply string-append syntmp-messages-1451)))) (syntmp-error-hook-91 #f syntmp-message-1455 (syntmp-strip-164 syntmp-object-1452 (quote (())))))))) (set! install-global-transformer (lambda (syntmp-sym-1456 syntmp-v-1457) (begin (let ((syntmp-x-1458 syntmp-sym-1456)) (if (not (symbol? syntmp-x-1458)) (syntmp-error-hook-91 (quote define-syntax) "invalid argument" syntmp-x-1458))) (let ((syntmp-x-1459 syntmp-v-1457)) (if (not (procedure? syntmp-x-1459)) (syntmp-error-hook-91 (quote define-syntax) "invalid argument" syntmp-x-1459))) (syntmp-global-extend-115 (quote macro) syntmp-sym-1456 syntmp-v-1457)))) (letrec ((syntmp-match-1464 (lambda (syntmp-e-1465 syntmp-p-1466 syntmp-w-1467 syntmp-r-1468) (cond ((not syntmp-r-1468) #f) ((eq? syntmp-p-1466 (quote any)) (cons (syntmp-wrap-145 syntmp-e-1465 syntmp-w-1467 #f) syntmp-r-1468)) ((syntmp-syntax-object?-101 syntmp-e-1465) (syntmp-match*-1463 (let ((syntmp-e-1469 (syntmp-syntax-object-expression-102 syntmp-e-1465))) (if (annotation? syntmp-e-1469) (annotation-expression syntmp-e-1469) syntmp-e-1469)) syntmp-p-1466 (syntmp-join-wraps-136 syntmp-w-1467 (syntmp-syntax-object-wrap-103 syntmp-e-1465)) syntmp-r-1468)) (else (syntmp-match*-1463 (let ((syntmp-e-1470 syntmp-e-1465)) (if (annotation? syntmp-e-1470) (annotation-expression syntmp-e-1470) syntmp-e-1470)) syntmp-p-1466 syntmp-w-1467 syntmp-r-1468))))) (syntmp-match*-1463 (lambda (syntmp-e-1471 syntmp-p-1472 syntmp-w-1473 syntmp-r-1474) (cond ((null? syntmp-p-1472) (and (null? syntmp-e-1471) syntmp-r-1474)) ((pair? syntmp-p-1472) (and (pair? syntmp-e-1471) (syntmp-match-1464 (car syntmp-e-1471) (car syntmp-p-1472) syntmp-w-1473 (syntmp-match-1464 (cdr syntmp-e-1471) (cdr syntmp-p-1472) syntmp-w-1473 syntmp-r-1474)))) ((eq? syntmp-p-1472 (quote each-any)) (let ((syntmp-l-1475 (syntmp-match-each-any-1461 syntmp-e-1471 syntmp-w-1473))) (and syntmp-l-1475 (cons syntmp-l-1475 syntmp-r-1474)))) (else (let ((syntmp-t-1476 (vector-ref syntmp-p-1472 0))) (if (memv syntmp-t-1476 (quote (each))) (if (null? syntmp-e-1471) (syntmp-match-empty-1462 (vector-ref syntmp-p-1472 1) syntmp-r-1474) (let ((syntmp-l-1477 (syntmp-match-each-1460 syntmp-e-1471 (vector-ref syntmp-p-1472 1) syntmp-w-1473))) (and syntmp-l-1477 (let syntmp-collect-1478 ((syntmp-l-1479 syntmp-l-1477)) (if (null? (car syntmp-l-1479)) syntmp-r-1474 (cons (map car syntmp-l-1479) (syntmp-collect-1478 (map cdr syntmp-l-1479)))))))) (if (memv syntmp-t-1476 (quote (free-id))) (and (syntmp-id?-117 syntmp-e-1471) (syntmp-free-id=?-140 (syntmp-wrap-145 syntmp-e-1471 syntmp-w-1473 #f) (vector-ref syntmp-p-1472 1)) syntmp-r-1474) (if (memv syntmp-t-1476 (quote (atom))) (and (equal? (vector-ref syntmp-p-1472 1) (syntmp-strip-164 syntmp-e-1471 syntmp-w-1473)) syntmp-r-1474) (if (memv syntmp-t-1476 (quote (vector))) (and (vector? syntmp-e-1471) (syntmp-match-1464 (vector->list syntmp-e-1471) (vector-ref syntmp-p-1472 1) syntmp-w-1473 syntmp-r-1474))))))))))) (syntmp-match-empty-1462 (lambda (syntmp-p-1480 syntmp-r-1481) (cond ((null? syntmp-p-1480) syntmp-r-1481) ((eq? syntmp-p-1480 (quote any)) (cons (quote ()) syntmp-r-1481)) ((pair? syntmp-p-1480) (syntmp-match-empty-1462 (car syntmp-p-1480) (syntmp-match-empty-1462 (cdr syntmp-p-1480) syntmp-r-1481))) ((eq? syntmp-p-1480 (quote each-any)) (cons (quote ()) syntmp-r-1481)) (else (let ((syntmp-t-1482 (vector-ref syntmp-p-1480 0))) (if (memv syntmp-t-1482 (quote (each))) (syntmp-match-empty-1462 (vector-ref syntmp-p-1480 1) syntmp-r-1481) (if (memv syntmp-t-1482 (quote (free-id atom))) syntmp-r-1481 (if (memv syntmp-t-1482 (quote (vector))) (syntmp-match-empty-1462 (vector-ref syntmp-p-1480 1) syntmp-r-1481))))))))) (syntmp-match-each-any-1461 (lambda (syntmp-e-1483 syntmp-w-1484) (cond ((annotation? syntmp-e-1483) (syntmp-match-each-any-1461 (annotation-expression syntmp-e-1483) syntmp-w-1484)) ((pair? syntmp-e-1483) (let ((syntmp-l-1485 (syntmp-match-each-any-1461 (cdr syntmp-e-1483) syntmp-w-1484))) (and syntmp-l-1485 (cons (syntmp-wrap-145 (car syntmp-e-1483) syntmp-w-1484 #f) syntmp-l-1485)))) ((null? syntmp-e-1483) (quote ())) ((syntmp-syntax-object?-101 syntmp-e-1483) (syntmp-match-each-any-1461 (syntmp-syntax-object-expression-102 syntmp-e-1483) (syntmp-join-wraps-136 syntmp-w-1484 (syntmp-syntax-object-wrap-103 syntmp-e-1483)))) (else #f)))) (syntmp-match-each-1460 (lambda (syntmp-e-1486 syntmp-p-1487 syntmp-w-1488) (cond ((annotation? syntmp-e-1486) (syntmp-match-each-1460 (annotation-expression syntmp-e-1486) syntmp-p-1487 syntmp-w-1488)) ((pair? syntmp-e-1486) (let ((syntmp-first-1489 (syntmp-match-1464 (car syntmp-e-1486) syntmp-p-1487 syntmp-w-1488 (quote ())))) (and syntmp-first-1489 (let ((syntmp-rest-1490 (syntmp-match-each-1460 (cdr syntmp-e-1486) syntmp-p-1487 syntmp-w-1488))) (and syntmp-rest-1490 (cons syntmp-first-1489 syntmp-rest-1490)))))) ((null? syntmp-e-1486) (quote ())) ((syntmp-syntax-object?-101 syntmp-e-1486) (syntmp-match-each-1460 (syntmp-syntax-object-expression-102 syntmp-e-1486) syntmp-p-1487 (syntmp-join-wraps-136 syntmp-w-1488 (syntmp-syntax-object-wrap-103 syntmp-e-1486)))) (else #f))))) (begin (set! syntax-dispatch (lambda (syntmp-e-1491 syntmp-p-1492) (cond ((eq? syntmp-p-1492 (quote any)) (list syntmp-e-1491)) ((syntmp-syntax-object?-101 syntmp-e-1491) (syntmp-match*-1463 (let ((syntmp-e-1493 (syntmp-syntax-object-expression-102 syntmp-e-1491))) (if (annotation? syntmp-e-1493) (annotation-expression syntmp-e-1493) syntmp-e-1493)) syntmp-p-1492 (syntmp-syntax-object-wrap-103 syntmp-e-1491) (quote ()))) (else (syntmp-match*-1463 (let ((syntmp-e-1494 syntmp-e-1491)) (if (annotation? syntmp-e-1494) (annotation-expression syntmp-e-1494) syntmp-e-1494)) syntmp-p-1492 (quote (())) (quote ())))))) (set! sc-chi syntmp-chi-153)))))
+(install-global-transformer (quote with-syntax) (lambda (syntmp-x-1495) ((lambda (syntmp-tmp-1496) ((lambda (syntmp-tmp-1497) (if syntmp-tmp-1497 (apply (lambda (syntmp-_-1498 syntmp-e1-1499 syntmp-e2-1500) (cons (quote #(syntax-object begin ((top) #(ribcage #(_ e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1499 syntmp-e2-1500))) syntmp-tmp-1497) ((lambda (syntmp-tmp-1502) (if syntmp-tmp-1502 (apply (lambda (syntmp-_-1503 syntmp-out-1504 syntmp-in-1505 syntmp-e1-1506 syntmp-e2-1507) (list (quote #(syntax-object syntax-case ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-in-1505 (quote ()) (list syntmp-out-1504 (cons (quote #(syntax-object begin ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1506 syntmp-e2-1507))))) syntmp-tmp-1502) ((lambda (syntmp-tmp-1509) (if syntmp-tmp-1509 (apply (lambda (syntmp-_-1510 syntmp-out-1511 syntmp-in-1512 syntmp-e1-1513 syntmp-e2-1514) (list (quote #(syntax-object syntax-case ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons (quote #(syntax-object list ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-in-1512) (quote ()) (list syntmp-out-1511 (cons (quote #(syntax-object begin ((top) #(ribcage #(_ out in e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1513 syntmp-e2-1514))))) syntmp-tmp-1509) (syntax-error syntmp-tmp-1496))) (syntax-dispatch syntmp-tmp-1496 (quote (any #(each (any any)) any . each-any)))))) (syntax-dispatch syntmp-tmp-1496 (quote (any ((any any)) any . each-any)))))) (syntax-dispatch syntmp-tmp-1496 (quote (any () any . each-any))))) syntmp-x-1495)))
+(install-global-transformer (quote syntax-rules) (lambda (syntmp-x-1536) ((lambda (syntmp-tmp-1537) ((lambda (syntmp-tmp-1538) (if syntmp-tmp-1538 (apply (lambda (syntmp-_-1539 syntmp-k-1540 syntmp-keyword-1541 syntmp-pattern-1542 syntmp-template-1543) (list (quote #(syntax-object lambda ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote (#(syntax-object x ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f))) (cons (quote #(syntax-object syntax-case ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons (quote #(syntax-object x ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-k-1540 (map (lambda (syntmp-tmp-1546 syntmp-tmp-1545) (list (cons (quote #(syntax-object dummy ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-tmp-1545) (list (quote #(syntax-object syntax ((top) #(ribcage #(_ k keyword pattern template) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-tmp-1546))) syntmp-template-1543 syntmp-pattern-1542)))))) syntmp-tmp-1538) (syntax-error syntmp-tmp-1537))) (syntax-dispatch syntmp-tmp-1537 (quote (any each-any . #(each ((any . any) any))))))) syntmp-x-1536)))
+(install-global-transformer (quote let*) (lambda (syntmp-x-1557) ((lambda (syntmp-tmp-1558) ((lambda (syntmp-tmp-1559) (if (if syntmp-tmp-1559 (apply (lambda (syntmp-let*-1560 syntmp-x-1561 syntmp-v-1562 syntmp-e1-1563 syntmp-e2-1564) (andmap identifier? syntmp-x-1561)) syntmp-tmp-1559) #f) (apply (lambda (syntmp-let*-1566 syntmp-x-1567 syntmp-v-1568 syntmp-e1-1569 syntmp-e2-1570) (let syntmp-f-1571 ((syntmp-bindings-1572 (map list syntmp-x-1567 syntmp-v-1568))) (if (null? syntmp-bindings-1572) (cons (quote #(syntax-object let ((top) #(ribcage () () ()) #(ribcage #(f bindings) #((top) (top)) #("i" "i")) #(ribcage #(let* x v e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons (quote ()) (cons syntmp-e1-1569 syntmp-e2-1570))) ((lambda (syntmp-tmp-1576) ((lambda (syntmp-tmp-1577) (if syntmp-tmp-1577 (apply (lambda (syntmp-body-1578 syntmp-binding-1579) (list (quote #(syntax-object let ((top) #(ribcage #(body binding) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(f bindings) #((top) (top)) #("i" "i")) #(ribcage #(let* x v e1 e2) #((top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list syntmp-binding-1579) syntmp-body-1578)) syntmp-tmp-1577) (syntax-error syntmp-tmp-1576))) (syntax-dispatch syntmp-tmp-1576 (quote (any any))))) (list (syntmp-f-1571 (cdr syntmp-bindings-1572)) (car syntmp-bindings-1572)))))) syntmp-tmp-1559) (syntax-error syntmp-tmp-1558))) (syntax-dispatch syntmp-tmp-1558 (quote (any #(each (any any)) any . each-any))))) syntmp-x-1557)))
+(install-global-transformer (quote do) (lambda (syntmp-orig-x-1599) ((lambda (syntmp-tmp-1600) ((lambda (syntmp-tmp-1601) (if syntmp-tmp-1601 (apply (lambda (syntmp-_-1602 syntmp-var-1603 syntmp-init-1604 syntmp-step-1605 syntmp-e0-1606 syntmp-e1-1607 syntmp-c-1608) ((lambda (syntmp-tmp-1609) ((lambda (syntmp-tmp-1610) (if syntmp-tmp-1610 (apply (lambda (syntmp-step-1611) ((lambda (syntmp-tmp-1612) ((lambda (syntmp-tmp-1613) (if syntmp-tmp-1613 (apply (lambda () (list (quote #(syntax-object let ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (quote #(syntax-object doloop ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (map list syntmp-var-1603 syntmp-init-1604) (list (quote #(syntax-object if ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (list (quote #(syntax-object not ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) syntmp-e0-1606) (cons (quote #(syntax-object begin ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (append syntmp-c-1608 (list (cons (quote #(syntax-object doloop ((top) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) syntmp-step-1611))))))) syntmp-tmp-1613) ((lambda (syntmp-tmp-1618) (if syntmp-tmp-1618 (apply (lambda (syntmp-e1-1619 syntmp-e2-1620) (list (quote #(syntax-object let ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (quote #(syntax-object doloop ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (map list syntmp-var-1603 syntmp-init-1604) (list (quote #(syntax-object if ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) syntmp-e0-1606 (cons (quote #(syntax-object begin ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (cons syntmp-e1-1619 syntmp-e2-1620)) (cons (quote #(syntax-object begin ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) (append syntmp-c-1608 (list (cons (quote #(syntax-object doloop ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage #(step) #((top)) #("i")) #(ribcage #(_ var init step e0 e1 c) #((top) (top) (top) (top) (top) (top) (top)) #("i" "i" "i" "i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(orig-x) #((top)) #("i"))) #f)) syntmp-step-1611))))))) syntmp-tmp-1618) (syntax-error syntmp-tmp-1612))) (syntax-dispatch syntmp-tmp-1612 (quote (any . each-any)))))) (syntax-dispatch syntmp-tmp-1612 (quote ())))) syntmp-e1-1607)) syntmp-tmp-1610) (syntax-error syntmp-tmp-1609))) (syntax-dispatch syntmp-tmp-1609 (quote each-any)))) (map (lambda (syntmp-v-1627 syntmp-s-1628) ((lambda (syntmp-tmp-1629) ((lambda (syntmp-tmp-1630) (if syntmp-tmp-1630 (apply (lambda () syntmp-v-1627) syntmp-tmp-1630) ((lambda (syntmp-tmp-1631) (if syntmp-tmp-1631 (apply (lambda (syntmp-e-1632) syntmp-e-1632) syntmp-tmp-1631) ((lambda (syntmp-_-1633) (syntax-error syntmp-orig-x-1599)) syntmp-tmp-1629))) (syntax-dispatch syntmp-tmp-1629 (quote (any)))))) (syntax-dispatch syntmp-tmp-1629 (quote ())))) syntmp-s-1628)) syntmp-var-1603 syntmp-step-1605))) syntmp-tmp-1601) (syntax-error syntmp-tmp-1600))) (syntax-dispatch syntmp-tmp-1600 (quote (any #(each (any any . any)) (any . each-any) . each-any))))) syntmp-orig-x-1599)))
+(install-global-transformer (quote quasiquote) (letrec ((syntmp-quasicons-1661 (lambda (syntmp-x-1665 syntmp-y-1666) ((lambda (syntmp-tmp-1667) ((lambda (syntmp-tmp-1668) (if syntmp-tmp-1668 (apply (lambda (syntmp-x-1669 syntmp-y-1670) ((lambda (syntmp-tmp-1671) ((lambda (syntmp-tmp-1672) (if syntmp-tmp-1672 (apply (lambda (syntmp-dy-1673) ((lambda (syntmp-tmp-1674) ((lambda (syntmp-tmp-1675) (if syntmp-tmp-1675 (apply (lambda (syntmp-dx-1676) (list (quote #(syntax-object quote ((top) #(ribcage #(dx) #((top)) #("i")) #(ribcage #(dy) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) (cons syntmp-dx-1676 syntmp-dy-1673))) syntmp-tmp-1675) ((lambda (syntmp-_-1677) (if (null? syntmp-dy-1673) (list (quote #(syntax-object list ((top) #(ribcage #(_) #((top)) #("i")) #(ribcage #(dy) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1669) (list (quote #(syntax-object cons ((top) #(ribcage #(_) #((top)) #("i")) #(ribcage #(dy) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1669 syntmp-y-1670))) syntmp-tmp-1674))) (syntax-dispatch syntmp-tmp-1674 (quote (#(free-id #(syntax-object quote ((top) #(ribcage #(dy) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any))))) syntmp-x-1669)) syntmp-tmp-1672) ((lambda (syntmp-tmp-1678) (if syntmp-tmp-1678 (apply (lambda (syntmp-stuff-1679) (cons (quote #(syntax-object list ((top) #(ribcage #(stuff) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) (cons syntmp-x-1669 syntmp-stuff-1679))) syntmp-tmp-1678) ((lambda (syntmp-else-1680) (list (quote #(syntax-object cons ((top) #(ribcage #(else) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1669 syntmp-y-1670)) syntmp-tmp-1671))) (syntax-dispatch syntmp-tmp-1671 (quote (#(free-id #(syntax-object list ((top) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) . any)))))) (syntax-dispatch syntmp-tmp-1671 (quote (#(free-id #(syntax-object quote ((top) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any))))) syntmp-y-1670)) syntmp-tmp-1668) (syntax-error syntmp-tmp-1667))) (syntax-dispatch syntmp-tmp-1667 (quote (any any))))) (list syntmp-x-1665 syntmp-y-1666)))) (syntmp-quasiappend-1662 (lambda (syntmp-x-1681 syntmp-y-1682) ((lambda (syntmp-tmp-1683) ((lambda (syntmp-tmp-1684) (if syntmp-tmp-1684 (apply (lambda (syntmp-x-1685 syntmp-y-1686) ((lambda (syntmp-tmp-1687) ((lambda (syntmp-tmp-1688) (if syntmp-tmp-1688 (apply (lambda () syntmp-x-1685) syntmp-tmp-1688) ((lambda (syntmp-_-1689) (list (quote #(syntax-object append ((top) #(ribcage #(_) #((top)) #("i")) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1685 syntmp-y-1686)) syntmp-tmp-1687))) (syntax-dispatch syntmp-tmp-1687 (quote (#(free-id #(syntax-object quote ((top) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x y) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) ()))))) syntmp-y-1686)) syntmp-tmp-1684) (syntax-error syntmp-tmp-1683))) (syntax-dispatch syntmp-tmp-1683 (quote (any any))))) (list syntmp-x-1681 syntmp-y-1682)))) (syntmp-quasivector-1663 (lambda (syntmp-x-1690) ((lambda (syntmp-tmp-1691) ((lambda (syntmp-x-1692) ((lambda (syntmp-tmp-1693) ((lambda (syntmp-tmp-1694) (if syntmp-tmp-1694 (apply (lambda (syntmp-x-1695) (list (quote #(syntax-object quote ((top) #(ribcage #(x) #((top)) #("i")) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) (list->vector syntmp-x-1695))) syntmp-tmp-1694) ((lambda (syntmp-tmp-1697) (if syntmp-tmp-1697 (apply (lambda (syntmp-x-1698) (cons (quote #(syntax-object vector ((top) #(ribcage #(x) #((top)) #("i")) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1698)) syntmp-tmp-1697) ((lambda (syntmp-_-1700) (list (quote #(syntax-object list->vector ((top) #(ribcage #(_) #((top)) #("i")) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-x-1692)) syntmp-tmp-1693))) (syntax-dispatch syntmp-tmp-1693 (quote (#(free-id #(syntax-object list ((top) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) . each-any)))))) (syntax-dispatch syntmp-tmp-1693 (quote (#(free-id #(syntax-object quote ((top) #(ribcage #(x) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) each-any))))) syntmp-x-1692)) syntmp-tmp-1691)) syntmp-x-1690))) (syntmp-quasi-1664 (lambda (syntmp-p-1701 syntmp-lev-1702) ((lambda (syntmp-tmp-1703) ((lambda (syntmp-tmp-1704) (if syntmp-tmp-1704 (apply (lambda (syntmp-p-1705) (if (= syntmp-lev-1702 0) syntmp-p-1705 (syntmp-quasicons-1661 (quote (#(syntax-object quote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f) #(syntax-object unquote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f))) (syntmp-quasi-1664 (list syntmp-p-1705) (- syntmp-lev-1702 1))))) syntmp-tmp-1704) ((lambda (syntmp-tmp-1706) (if syntmp-tmp-1706 (apply (lambda (syntmp-p-1707 syntmp-q-1708) (if (= syntmp-lev-1702 0) (syntmp-quasiappend-1662 syntmp-p-1707 (syntmp-quasi-1664 syntmp-q-1708 syntmp-lev-1702)) (syntmp-quasicons-1661 (syntmp-quasicons-1661 (quote (#(syntax-object quote ((top) #(ribcage #(p q) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f) #(syntax-object unquote-splicing ((top) #(ribcage #(p q) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f))) (syntmp-quasi-1664 (list syntmp-p-1707) (- syntmp-lev-1702 1))) (syntmp-quasi-1664 syntmp-q-1708 syntmp-lev-1702)))) syntmp-tmp-1706) ((lambda (syntmp-tmp-1709) (if syntmp-tmp-1709 (apply (lambda (syntmp-p-1710) (syntmp-quasicons-1661 (quote (#(syntax-object quote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f) #(syntax-object quasiquote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f))) (syntmp-quasi-1664 (list syntmp-p-1710) (+ syntmp-lev-1702 1)))) syntmp-tmp-1709) ((lambda (syntmp-tmp-1711) (if syntmp-tmp-1711 (apply (lambda (syntmp-p-1712 syntmp-q-1713) (syntmp-quasicons-1661 (syntmp-quasi-1664 syntmp-p-1712 syntmp-lev-1702) (syntmp-quasi-1664 syntmp-q-1713 syntmp-lev-1702))) syntmp-tmp-1711) ((lambda (syntmp-tmp-1714) (if syntmp-tmp-1714 (apply (lambda (syntmp-x-1715) (syntmp-quasivector-1663 (syntmp-quasi-1664 syntmp-x-1715 syntmp-lev-1702))) syntmp-tmp-1714) ((lambda (syntmp-p-1717) (list (quote #(syntax-object quote ((top) #(ribcage #(p) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) syntmp-p-1717)) syntmp-tmp-1703))) (syntax-dispatch syntmp-tmp-1703 (quote #(vector each-any)))))) (syntax-dispatch syntmp-tmp-1703 (quote (any . any)))))) (syntax-dispatch syntmp-tmp-1703 (quote (#(free-id #(syntax-object quasiquote ((top) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any)))))) (syntax-dispatch syntmp-tmp-1703 (quote ((#(free-id #(syntax-object unquote-splicing ((top) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any) . any)))))) (syntax-dispatch syntmp-tmp-1703 (quote (#(free-id #(syntax-object unquote ((top) #(ribcage () () ()) #(ribcage #(p lev) #((top) (top)) #("i" "i")) #(ribcage #(quasicons quasiappend quasivector quasi) #((top) (top) (top) (top)) #("i" "i" "i" "i"))) #f)) any))))) syntmp-p-1701)))) (lambda (syntmp-x-1718) ((lambda (syntmp-tmp-1719) ((lambda (syntmp-tmp-1720) (if syntmp-tmp-1720 (apply (lambda (syntmp-_-1721 syntmp-e-1722) (syntmp-quasi-1664 syntmp-e-1722 0)) syntmp-tmp-1720) (syntax-error syntmp-tmp-1719))) (syntax-dispatch syntmp-tmp-1719 (quote (any any))))) syntmp-x-1718))))
+(install-global-transformer (quote include) (lambda (syntmp-x-1782) (letrec ((syntmp-read-file-1783 (lambda (syntmp-fn-1784 syntmp-k-1785) (let ((syntmp-p-1786 (open-input-file syntmp-fn-1784))) (let syntmp-f-1787 ((syntmp-x-1788 (read syntmp-p-1786))) (if (eof-object? syntmp-x-1788) (begin (close-input-port syntmp-p-1786) (quote ())) (cons (datum->syntax-object syntmp-k-1785 syntmp-x-1788) (syntmp-f-1787 (read syntmp-p-1786))))))))) ((lambda (syntmp-tmp-1789) ((lambda (syntmp-tmp-1790) (if syntmp-tmp-1790 (apply (lambda (syntmp-k-1791 syntmp-filename-1792) (let ((syntmp-fn-1793 (syntax-object->datum syntmp-filename-1792))) ((lambda (syntmp-tmp-1794) ((lambda (syntmp-tmp-1795) (if syntmp-tmp-1795 (apply (lambda (syntmp-exp-1796) (cons (quote #(syntax-object begin ((top) #(ribcage #(exp) #((top)) #("i")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(fn) #((top)) #("i")) #(ribcage #(k filename) #((top) (top)) #("i" "i")) #(ribcage (read-file) ((top)) ("i")) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-exp-1796)) syntmp-tmp-1795) (syntax-error syntmp-tmp-1794))) (syntax-dispatch syntmp-tmp-1794 (quote each-any)))) (syntmp-read-file-1783 syntmp-fn-1793 syntmp-k-1791)))) syntmp-tmp-1790) (syntax-error syntmp-tmp-1789))) (syntax-dispatch syntmp-tmp-1789 (quote (any any))))) syntmp-x-1782))))
+(install-global-transformer (quote unquote) (lambda (syntmp-x-1813) ((lambda (syntmp-tmp-1814) ((lambda (syntmp-tmp-1815) (if syntmp-tmp-1815 (apply (lambda (syntmp-_-1816 syntmp-e-1817) (error (quote unquote) "expression ,~s not valid outside of quasiquote" (syntax-object->datum syntmp-e-1817))) syntmp-tmp-1815) (syntax-error syntmp-tmp-1814))) (syntax-dispatch syntmp-tmp-1814 (quote (any any))))) syntmp-x-1813)))
+(install-global-transformer (quote unquote-splicing) (lambda (syntmp-x-1823) ((lambda (syntmp-tmp-1824) ((lambda (syntmp-tmp-1825) (if syntmp-tmp-1825 (apply (lambda (syntmp-_-1826 syntmp-e-1827) (error (quote unquote-splicing) "expression ,@~s not valid outside of quasiquote" (syntax-object->datum syntmp-e-1827))) syntmp-tmp-1825) (syntax-error syntmp-tmp-1824))) (syntax-dispatch syntmp-tmp-1824 (quote (any any))))) syntmp-x-1823)))
+(install-global-transformer (quote case) (lambda (syntmp-x-1833) ((lambda (syntmp-tmp-1834) ((lambda (syntmp-tmp-1835) (if syntmp-tmp-1835 (apply (lambda (syntmp-_-1836 syntmp-e-1837 syntmp-m1-1838 syntmp-m2-1839) ((lambda (syntmp-tmp-1840) ((lambda (syntmp-body-1841) (list (quote #(syntax-object let ((top) #(ribcage #(body) #((top)) #("i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (list (quote #(syntax-object t ((top) #(ribcage #(body) #((top)) #("i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-e-1837)) syntmp-body-1841)) syntmp-tmp-1840)) (let syntmp-f-1842 ((syntmp-clause-1843 syntmp-m1-1838) (syntmp-clauses-1844 syntmp-m2-1839)) (if (null? syntmp-clauses-1844) ((lambda (syntmp-tmp-1846) ((lambda (syntmp-tmp-1847) (if syntmp-tmp-1847 (apply (lambda (syntmp-e1-1848 syntmp-e2-1849) (cons (quote #(syntax-object begin ((top) #(ribcage #(e1 e2) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1848 syntmp-e2-1849))) syntmp-tmp-1847) ((lambda (syntmp-tmp-1851) (if syntmp-tmp-1851 (apply (lambda (syntmp-k-1852 syntmp-e1-1853 syntmp-e2-1854) (list (quote #(syntax-object if ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (quote #(syntax-object memv ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote #(syntax-object t ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (quote #(syntax-object quote ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-k-1852)) (cons (quote #(syntax-object begin ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1853 syntmp-e2-1854)))) syntmp-tmp-1851) ((lambda (syntmp-_-1857) (syntax-error syntmp-x-1833)) syntmp-tmp-1846))) (syntax-dispatch syntmp-tmp-1846 (quote (each-any any . each-any)))))) (syntax-dispatch syntmp-tmp-1846 (quote (#(free-id #(syntax-object else ((top) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) any . each-any))))) syntmp-clause-1843) ((lambda (syntmp-tmp-1858) ((lambda (syntmp-rest-1859) ((lambda (syntmp-tmp-1860) ((lambda (syntmp-tmp-1861) (if syntmp-tmp-1861 (apply (lambda (syntmp-k-1862 syntmp-e1-1863 syntmp-e2-1864) (list (quote #(syntax-object if ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (quote #(syntax-object memv ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote #(syntax-object t ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (list (quote #(syntax-object quote ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-k-1862)) (cons (quote #(syntax-object begin ((top) #(ribcage #(k e1 e2) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(rest) #((top)) #("i")) #(ribcage () () ()) #(ribcage #(f clause clauses) #((top) (top) (top)) #("i" "i" "i")) #(ribcage #(_ e m1 m2) #((top) (top) (top) (top)) #("i" "i" "i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e1-1863 syntmp-e2-1864)) syntmp-rest-1859)) syntmp-tmp-1861) ((lambda (syntmp-_-1867) (syntax-error syntmp-x-1833)) syntmp-tmp-1860))) (syntax-dispatch syntmp-tmp-1860 (quote (each-any any . each-any))))) syntmp-clause-1843)) syntmp-tmp-1858)) (syntmp-f-1842 (car syntmp-clauses-1844) (cdr syntmp-clauses-1844))))))) syntmp-tmp-1835) (syntax-error syntmp-tmp-1834))) (syntax-dispatch syntmp-tmp-1834 (quote (any any any . each-any))))) syntmp-x-1833)))
+(install-global-transformer (quote identifier-syntax) (lambda (syntmp-x-1897) ((lambda (syntmp-tmp-1898) ((lambda (syntmp-tmp-1899) (if syntmp-tmp-1899 (apply (lambda (syntmp-_-1900 syntmp-e-1901) (list (quote #(syntax-object lambda ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote (#(syntax-object x ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f))) (list (quote #(syntax-object syntax-case ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote #(syntax-object x ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote ()) (list (quote #(syntax-object id ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (quote (#(syntax-object identifier? ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f) (#(syntax-object syntax ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f) #(syntax-object id ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)))) (list (quote #(syntax-object syntax ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) syntmp-e-1901)) (list (cons syntmp-_-1900 (quote (#(syntax-object x ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f) #(syntax-object ... ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)))) (list (quote #(syntax-object syntax ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f)) (cons syntmp-e-1901 (quote (#(syntax-object x ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f) #(syntax-object ... ((top) #(ribcage #(_ e) #((top) (top)) #("i" "i")) #(ribcage () () ()) #(ribcage #(x) #((top)) #("i"))) #f))))))))) syntmp-tmp-1899) (syntax-error syntmp-tmp-1898))) (syntax-dispatch syntmp-tmp-1898 (quote (any any))))) syntmp-x-1897)))
index 7d00d71..0969342 100644 (file)
 (define fx< <)
 
 (define top-level-eval-hook
-  (lambda (x)
-    (eval `(,noexpand ,x) (interaction-environment))))
+  (lambda (x mod)
+    (eval `(,noexpand ,x) (or mod (interaction-environment)))))
 
 (define local-eval-hook
-  (lambda (x)
-    (eval `(,noexpand ,x) (interaction-environment))))
+  (lambda (x mod)
+    (eval `(,noexpand ,x) (or mod (interaction-environment)))))
 
 (define error-hook
   (lambda (who why what)
   (syntax-rules ()
     ((_) (gensym))))
 
+;; wingo: FIXME: use modules natively?
 (define put-global-definition-hook
   (lambda (symbol binding)
      (putprop symbol '*sc-expander* binding)))
 
 (define-syntax build-global-reference
   (syntax-rules ()
-    ((_ source var)
-     (build-annotated source (make-module-ref #f var #f)))))
+    ((_ source var mod)
+     (build-annotated source (make-module-ref #f var mod)))))
 
 (define-syntax build-global-assignment
   (syntax-rules ()
-    ((_ source var exp)
-     (build-annotated source `(set! ,(make-module-ref #f var #f) ,exp)))))
+    ((_ source var exp mod)
+     (build-annotated source `(set! ,(make-module-ref #f var mod) ,exp)))))
 
 (define-syntax build-global-definition
   (syntax-rules ()
-    ((_ source var exp)
+    ((_ source var exp mod)
      (build-annotated source `(define ,var ,exp)))))
 
 (define-syntax build-lambda
     ((_ src vars exp)
      (build-annotated src `(lambda ,vars ,exp)))))
 
+;; FIXME: wingo: add modules here somehow?
 (define-syntax build-primref
   (syntax-rules ()
     ((_ src name) (build-annotated src name))
         (build-annotated src
                          `(letrec ,(map list vars val-exps) ,body-exp)))))
 
+;; FIXME: wingo: use make-lexical
 (define-syntax build-lexical-var
   (syntax-rules ()
     ((_ src id) (build-annotated src (gensym (symbol->string id))))))
 ;;; wrapping expressions and identifiers
 
 (define wrap
-  (lambda (x w)
+  (lambda (x w defmod)
     (cond
       ((and (null? (wrap-marks w)) (null? (wrap-subst w))) x)
       ((syntax-object? x)
          (join-wraps w (syntax-object-wrap x))
          (syntax-object-module x)))
       ((null? x) x)
-      (else (make-syntax-object x w #f)))))
+      (else (make-syntax-object x w defmod)))))
 
 (define source-wrap
-  (lambda (x w s)
-    (wrap (if s (make-annotation x s #f) x) w)))
+  (lambda (x w s defmod)
+    (wrap (if s (make-annotation x s #f) x) w defmod)))
 
 ;;; expanding
 
 (define chi-sequence
-  (lambda (body r w s)
+  (lambda (body r w s mod)
     (build-sequence s
-      (let dobody ((body body) (r r) (w w))
+      (let dobody ((body body) (r r) (w w) (mod mod))
         (if (null? body)
             '()
-            (let ((first (chi (car body) r w)))
-              (cons first (dobody (cdr body) r w))))))))
+            (let ((first (chi (car body) r w mod)))
+              (cons first (dobody (cdr body) r w mod))))))))
 
 (define chi-top-sequence
-  (lambda (body r w s m esew)
+  (lambda (body r w s m esew mod)
     (build-sequence s
-      (let dobody ((body body) (r r) (w w) (m m) (esew esew))
+      (let dobody ((body body) (r r) (w w) (m m) (esew esew) (mod mod))
         (if (null? body)
             '()
-            (let ((first (chi-top (car body) r w m esew)))
-              (cons first (dobody (cdr body) r w m esew))))))))
+            (let ((first (chi-top (car body) r w m esew mod)))
+              (cons first (dobody (cdr body) r w m esew mod))))))))
 
+;; FIXME: module?
 (define chi-install-global
   (lambda (name e)
     (build-application no-source
                        ((free-id=? x (syntax compile)) 'compile)
                        ((free-id=? x (syntax load)) 'load)
                        ((free-id=? x (syntax eval)) 'eval)
-                       (else (syntax-error (wrap x w)
+                       (else (syntax-error (wrap x w #f)
                                "invalid eval-when situation"))))
                    situations))))))
 
-;;; syntax-type returns five values: type, value, e, w, and s.  The first
-;;; two are described in the table below.
+;;; syntax-type returns six values: type, value, e, w, s, and mod. The
+;;; first two are described in the table below.
 ;;;
 ;;;    type                   value         explanation
 ;;;    -------------------------------------------------------------------
 ;;;
 ;;; For define-form and define-syntax-form, e is the rhs expression.
 ;;; For all others, e is the entire form.  w is the wrap for e.
-;;; s is the source for the entire form.
+;;; s is the source for the entire form. mod is the module for e.
 ;;;
 ;;; syntax-type expands macros and unwraps as necessary to get to
 ;;; one of the forms above.  It also parses define and define-syntax
 ;;; forms, although perhaps this should be done by the consumer.
 
 (define syntax-type
-  (lambda (e r w s rib)
+  (lambda (e r w s rib mod)
     (cond
       ((symbol? e)
        (let* ((n (id-var-name e w))
               (b (lookup n r))
               (type (binding-type b)))
          (case type
-           ((lexical) (values type (binding-value b) e w s))
-           ((global) (values type n e w s))
+           ((lexical) (values type (binding-value b) e w s #f))
+           ((global) (values type n e w s mod))
            ((macro)
-            (syntax-type (chi-macro (binding-value b) e r w rib) r empty-wrap s rib))
-           (else (values type (binding-value b) e w s)))))
+            (syntax-type (chi-macro (binding-value b) e r w rib mod)
+                         r empty-wrap s rib mod))
+           (else (values type (binding-value b) e w s mod)))))
       ((pair? e)
        (let ((first (car e)))
          (if (id? first)
                     (b (lookup n r))
                     (type (binding-type b)))
                (case type
-                 ((lexical) (values 'lexical-call (binding-value b) e w s))
-                 ((global) (values 'global-call n e w s))
+                 ((lexical)
+                  (values 'lexical-call (binding-value b) e w s mod))
+                 ((global)
+                  (values 'global-call n e w s mod))
                  ((macro)
-                  (syntax-type (chi-macro (binding-value b) e r w rib)
-                    r empty-wrap s rib))
-                 ((core external-macro) (values type (binding-value b) e w s))
+                  (syntax-type (chi-macro (binding-value b) e r w rib mod)
+                    r empty-wrap s rib mod))
+                 ((core external-macro)
+                  (values type (binding-value b) e w s mod))
                  ((local-syntax)
-                  (values 'local-syntax-form (binding-value b) e w s))
-                 ((begin) (values 'begin-form #f e w s))
-                 ((eval-when) (values 'eval-when-form #f e w s))
+                  (values 'local-syntax-form (binding-value b) e w s mod))
+                 ((begin)
+                  (values 'begin-form #f e w s mod))
+                 ((eval-when)
+                  (values 'eval-when-form #f e w s mod))
                  ((define)
                   (syntax-case e ()
                     ((_ name val)
                      (id? (syntax name))
-                     (values 'define-form (syntax name) (syntax val) w s))
+                     (values 'define-form (syntax name) (syntax val) w s mod))
                     ((_ (name . args) e1 e2 ...)
                      (and (id? (syntax name))
                           (valid-bound-ids? (lambda-var-list (syntax args))))
                      ; need lambda here...
-                     (values 'define-form (wrap (syntax name) w)
-                       (cons (syntax lambda) (wrap (syntax (args e1 e2 ...)) w))
-                       empty-wrap s))
+                     (values 'define-form (wrap (syntax name) w #f)
+                       (cons (syntax lambda) (wrap (syntax (args e1 e2 ...)) w mod))
+                       empty-wrap s mod))
                     ((_ name)
                      (id? (syntax name))
-                     (values 'define-form (wrap (syntax name) w)
+                     (values 'define-form (wrap (syntax name) w #f)
                        (syntax (void))
-                       empty-wrap s))))
+                       empty-wrap s mod))))
                  ((define-syntax)
                   (syntax-case e ()
                     ((_ name val)
                      (id? (syntax name))
                      (values 'define-syntax-form (syntax name)
-                       (syntax val) w s))))
-                 (else (values 'call #f e w s))))
-             (values 'call #f e w s))))
+                       (syntax val) w s mod))))
+                 (else
+                  (values 'call #f e w s mod))))
+             (values 'call #f e w s mod))))
       ((syntax-object? e)
        ;; s can't be valid source if we've unwrapped
        (syntax-type (syntax-object-expression e)
                     r
                     (join-wraps w (syntax-object-wrap e))
-                    no-source rib))
+                    no-source rib (syntax-object-module e)))
       ((annotation? e)
-       (syntax-type (annotation-expression e) r w (annotation-source e) rib))
-      ((self-evaluating? e) (values 'constant #f e w s))
-      (else (values 'other #f e w s)))))
+       (syntax-type (annotation-expression e) r w (annotation-source e) rib mod))
+      ((self-evaluating? e) (values 'constant #f e w s mod))
+      (else (values 'other #f e w s mod)))))
 
 (define chi-top
-  (lambda (e r w m esew)
+  (lambda (e r w m esew mod)
     (define-syntax eval-if-c&e
       (syntax-rules ()
-        ((_ m e)
+        ((_ m e mod)
          (let ((x e))
-           (if (eq? m 'c&e) (top-level-eval-hook x))
+           (if (eq? m 'c&e) (top-level-eval-hook x mod))
            x))))
     (call-with-values
-      (lambda () (syntax-type e r w no-source #f))
-      (lambda (type value e w s)
+      (lambda () (syntax-type e r w no-source #f mod))
+      (lambda (type value e w s mod)
         (case type
           ((begin-form)
            (syntax-case e ()
              ((_) (chi-void))
              ((_ e1 e2 ...)
-              (chi-top-sequence (syntax (e1 e2 ...)) r w s m esew))))
+              (chi-top-sequence (syntax (e1 e2 ...)) r w s m esew mod))))
           ((local-syntax-form)
-           (chi-local-syntax value e r w s
-             (lambda (body r w s)
-               (chi-top-sequence body r w s m esew))))
+           (chi-local-syntax value e r w s mod
+             (lambda (body r w s mod)
+               (chi-top-sequence body r w s m esew mod))))
           ((eval-when-form)
            (syntax-case e ()
              ((_ (x ...) e1 e2 ...)
                 (cond
                   ((eq? m 'e)
                    (if (memq 'eval when-list)
-                       (chi-top-sequence body r w s 'e '(eval))
+                       (chi-top-sequence body r w s 'e '(eval) mod)
                        (chi-void)))
                   ((memq 'load when-list)
                    (if (or (memq 'compile when-list)
                            (and (eq? m 'c&e) (memq 'eval when-list)))
-                       (chi-top-sequence body r w s 'c&e '(compile load))
+                       (chi-top-sequence body r w s 'c&e '(compile load) mod)
                        (if (memq m '(c c&e))
-                           (chi-top-sequence body r w s 'c '(load))
+                           (chi-top-sequence body r w s 'c '(load) mod)
                            (chi-void))))
                   ((or (memq 'compile when-list)
                        (and (eq? m 'c&e) (memq 'eval when-list)))
                    (top-level-eval-hook
-                     (chi-top-sequence body r w s 'e '(eval)))
+                     (chi-top-sequence body r w s 'e '(eval) mod)
+                     mod)
                    (chi-void))
                   (else (chi-void)))))))
           ((define-syntax-form)
              (case m
                ((c)
                 (if (memq 'compile esew)
-                    (let ((e (chi-install-global n (chi e r w))))
-                      (top-level-eval-hook e)
+                    (let ((e (chi-install-global n (chi e r w mod))))
+                      (top-level-eval-hook e mod)
                       (if (memq 'load esew) e (chi-void)))
                     (if (memq 'load esew)
-                        (chi-install-global n (chi e r w))
+                        (chi-install-global n (chi e r w mod))
                         (chi-void))))
                ((c&e)
-                (let ((e (chi-install-global n (chi e r w))))
-                  (top-level-eval-hook e)
+                (let ((e (chi-install-global n (chi e r w mod))))
+                  (top-level-eval-hook e mod)
                   e))
                (else
                 (if (memq 'eval esew)
                     (top-level-eval-hook
-                      (chi-install-global n (chi e r w))))
+                      (chi-install-global n (chi e r w mod))
+                      mod))
                 (chi-void)))))
           ((define-form)
            (let* ((n (id-var-name value w))
              (case type
                ((global)
                 (eval-if-c&e m
-                  (build-global-definition s n (chi e r w))))
+                  (build-global-definition s n (chi e r w mod) mod)
+                  mod))
                ((displaced-lexical)
-                (syntax-error (wrap value w) "identifier out of context"))
+                (syntax-error (wrap value w #f) "identifier out of context"))
                (else
                (if (eq? type 'external-macro)
                    (eval-if-c&e m
-                                (build-global-definition s n (chi e r w)))
-                   (syntax-error (wrap value w)
+                      (build-global-definition s n (chi e r w mod) mod)
+                      mod)
+                   (syntax-error (wrap value w #f)
                                  "cannot define keyword at top level"))))))
-          (else (eval-if-c&e m (chi-expr type value e r w s))))))))
+          (else (eval-if-c&e m (chi-expr type value e r w s mod) mod)))))))
 
 (define chi
-  (lambda (e r w)
+  (lambda (e r w mod)
     (call-with-values
-      (lambda () (syntax-type e r w no-source #f))
-      (lambda (type value e w s)
-        (chi-expr type value e r w s)))))
+      (lambda () (syntax-type e r w no-source #f mod))
+      (lambda (type value e w s mod)
+        (chi-expr type value e r w s mod)))))
 
 (define chi-expr
-  (lambda (type value e r w s)
+  (lambda (type value e r w s mod)
     (case type
       ((lexical)
        (build-lexical-reference 'value s value))
-      ((core external-macro) (value e r w s))
+      ((core external-macro)
+       ;; apply transformer
+       (value e r w s mod))
       ((lexical-call)
        (chi-application
          (build-lexical-reference 'fun (source-annotation (car e)) value)
-         e r w s))
+         e r w s mod))
       ((global-call)
        (chi-application
-         (build-global-reference (source-annotation (car e)) value)
-         e r w s))
-      ((constant) (build-data s (strip (source-wrap e w s) empty-wrap)))
-      ((global) (build-global-reference s value))
-      ((call) (chi-application (chi (car e) r w) e r w s))
+         (build-global-reference (source-annotation (car e)) value mod)
+         e r w s mod))
+      ((constant) (build-data s (strip (source-wrap e w s mod) empty-wrap)))
+      ((global) (build-global-reference s value mod))
+      ((call) (chi-application (chi (car e) r w mod) e r w s mod))
       ((begin-form)
        (syntax-case e ()
-         ((_ e1 e2 ...) (chi-sequence (syntax (e1 e2 ...)) r w s))))
+         ((_ e1 e2 ...) (chi-sequence (syntax (e1 e2 ...)) r w s mod))))
       ((local-syntax-form)
-       (chi-local-syntax value e r w s chi-sequence))
+       (chi-local-syntax value e r w s mod chi-sequence))
       ((eval-when-form)
        (syntax-case e ()
          ((_ (x ...) e1 e2 ...)
           (let ((when-list (chi-when-list e (syntax (x ...)) w)))
             (if (memq 'eval when-list)
-                (chi-sequence (syntax (e1 e2 ...)) r w s)
+                (chi-sequence (syntax (e1 e2 ...)) r w s mod)
                 (chi-void))))))
       ((define-form define-syntax-form)
-       (syntax-error (wrap value w) "invalid context for definition of"))
+       (syntax-error (wrap value w #f) "invalid context for definition of"))
       ((syntax)
-       (syntax-error (source-wrap e w s)
+       (syntax-error (source-wrap e w s mod)
          "reference to pattern variable outside syntax form"))
       ((displaced-lexical)
-       (syntax-error (source-wrap e w s)
+       (syntax-error (source-wrap e w s mod)
          "reference to identifier outside its scope"))
-      (else (syntax-error (source-wrap e w s))))))
+      (else (syntax-error (source-wrap e w s mod))))))
 
 (define chi-application
-  (lambda (x e r w s)
+  (lambda (x e r w s mod)
     (syntax-case e ()
       ((e0 e1 ...)
        (build-application s x
-         (map (lambda (e) (chi e r w)) (syntax (e1 ...))))))))
+         (map (lambda (e) (chi e r w mod)) (syntax (e1 ...))))))))
 
 (define chi-macro
-  (lambda (p e r w rib)
+  (lambda (p e r w rib mod)
     (define rebuild-macro-output
       (lambda (x m)
         (cond ((pair? x)
               ((syntax-object? x)
                (let ((w (syntax-object-wrap x)))
                  (let ((ms (wrap-marks w)) (s (wrap-subst w)))
-                   (make-syntax-object (syntax-object-expression x)
-                     (if (and (pair? ms) (eq? (car ms) the-anti-mark))
-                         (make-wrap (cdr ms)
-                           (if rib (cons rib (cdr s)) (cdr s)))
-                         (make-wrap (cons m ms)
-                           (if rib
-                               (cons rib (cons 'shift s))
-                               (cons 'shift s))))
-                     (syntax-object-module x)))))
+                   (if (and (pair? ms) (eq? (car ms) the-anti-mark))
+                       ;; output is from original text
+                       (make-syntax-object
+                        (syntax-object-expression x)
+                        (make-wrap (cdr ms) (if rib (cons rib (cdr s)) (cdr s)))
+                        (syntax-object-module x))
+                       ;; output introduced by macro
+                       (make-syntax-object
+                        (syntax-object-expression x)
+                        (make-wrap (cons m ms)
+                                   (if rib
+                                       (cons rib (cons 'shift s))
+                                       (cons 'shift s)))
+                        (procedure-module p)))))) ;; hither the hygiene
               ((vector? x)
                (let* ((n (vector-length x)) (v (make-vector n)))
                  (do ((i 0 (fx+ i 1)))
               ((symbol? x)
                (syntax-error x "encountered raw symbol in macro output"))
               (else x))))
-    (rebuild-macro-output (p (wrap e (anti-mark w))) (new-mark))))
+    (rebuild-macro-output (p (wrap e (anti-mark w) mod)) (new-mark))))
 
 (define chi-body
   ;; In processing the forms of the body, we create a new, empty wrap.
   ;; into the body.
   ;;
   ;; outer-form is fully wrapped w/source
-  (lambda (body outer-form r w)
+  (lambda (body outer-form r w mod)
     (let* ((r (cons '("placeholder" . (placeholder)) r))
            (ribcage (make-empty-ribcage))
            (w (make-wrap (wrap-marks w) (cons ribcage (wrap-subst w)))))
-      (let parse ((body (map (lambda (x) (cons r (wrap x w))) body))
+      (let parse ((body (map (lambda (x) (cons r (wrap x w mod))) body))
                   (ids '()) (labels '()) (vars '()) (vals '()) (bindings '()))
         (if (null? body)
             (syntax-error outer-form "no expressions in body")
             (let ((e (cdar body)) (er (caar body)))
               (call-with-values
-                (lambda () (syntax-type e er empty-wrap no-source ribcage))
-                (lambda (type value e w s)
+                (lambda () (syntax-type e er empty-wrap no-source ribcage mod))
+                (lambda (type value e w s mod)
                   (case type
                     ((define-form)
-                     (let ((id (wrap value w)) (label (gen-label)))
+                     (let ((id (wrap value w mod)) (label (gen-label)))
                        (let ((var (gen-var id)))
                          (extend-ribcage! ribcage id label)
                          (parse (cdr body)
                            (cons id ids) (cons label labels)
-                           (cons var vars) (cons (cons er (wrap e w)) vals)
+                           (cons var vars) (cons (cons er (wrap e w mod)) vals)
                            (cons (make-binding 'lexical var) bindings)))))
                     ((define-syntax-form)
-                     (let ((id (wrap value w)) (label (gen-label)))
+                     (let ((id (wrap value w mod)) (label (gen-label)))
                        (extend-ribcage! ribcage id label)
                        (parse (cdr body)
                          (cons id ids) (cons label labels)
                          vars vals
-                         (cons (make-binding 'macro (cons er (wrap e w)))
+                         (cons (make-binding 'macro (cons er (wrap e w mod)))
                                bindings))))
                     ((begin-form)
                      (syntax-case e ()
                         (parse (let f ((forms (syntax (e1 ...))))
                                  (if (null? forms)
                                      (cdr body)
-                                     (cons (cons er (wrap (car forms) w))
+                                     (cons (cons er (wrap (car forms) w mod))
                                            (f (cdr forms)))))
                           ids labels vars vals bindings))))
                     ((local-syntax-form)
-                     (chi-local-syntax value e er w s
-                       (lambda (forms er w s)
+                     (chi-local-syntax value e er w s mod
+                       (lambda (forms er w s mod)
                          (parse (let f ((forms forms))
                                   (if (null? forms)
                                       (cdr body)
-                                      (cons (cons er (wrap (car forms) w))
+                                      (cons (cons er (wrap (car forms) w mod))
                                             (f (cdr forms)))))
                            ids labels vars vals bindings))))
                     (else ; found a non-definition
                      (if (null? ids)
                          (build-sequence no-source
                            (map (lambda (x)
-                                  (chi (cdr x) (car x) empty-wrap))
-                                (cons (cons er (source-wrap e w s))
+                                  (chi (cdr x) (car x) empty-wrap mod))
+                                (cons (cons er (source-wrap e w s mod))
                                       (cdr body))))
                          (begin
                            (if (not (valid-bound-ids? ids))
                                                     (macros-only-env er))))
                                          (set-cdr! b
                                            (eval-local-transformer
-                                             (chi (cddr b) r-cache empty-wrap)))
+                                             (chi (cddr b) r-cache empty-wrap mod)
+                                             mod))
                                          (loop (cdr bs) er r-cache))
                                        (loop (cdr bs) er-cache r-cache)))))
                            (set-cdr! r (extend-env labels bindings (cdr r)))
                            (build-letrec no-source
                              vars
                              (map (lambda (x)
-                                    (chi (cdr x) (car x) empty-wrap))
+                                    (chi (cdr x) (car x) empty-wrap mod))
                                   vals)
                              (build-sequence no-source
                                (map (lambda (x)
-                                      (chi (cdr x) (car x) empty-wrap))
-                                    (cons (cons er (source-wrap e w s))
+                                      (chi (cdr x) (car x) empty-wrap mod))
+                                    (cons (cons er (source-wrap e w s mod))
                                           (cdr body)))))))))))))))))
 
 (define chi-lambda-clause
-  (lambda (e c r w k)
+  (lambda (e c r w mod k)
     (syntax-case c ()
       (((id ...) e1 e2 ...)
        (let ((ids (syntax (id ...))))
                   (chi-body (syntax (e1 e2 ...))
                             e
                             (extend-var-env labels new-vars r)
-                            (make-binding-wrap ids labels w)))))))
+                            (make-binding-wrap ids labels w)
+                            mod))))))
       ((ids e1 e2 ...)
        (let ((old-ids (lambda-var-list (syntax ids))))
          (if (not (valid-bound-ids? old-ids))
                   (chi-body (syntax (e1 e2 ...))
                             e
                             (extend-var-env labels new-vars r)
-                            (make-binding-wrap old-ids labels w)))))))
+                            (make-binding-wrap old-ids labels w)
+                            mod))))))
       (_ (syntax-error e)))))
 
 (define chi-local-syntax
-  (lambda (rec? e r w s k)
+  (lambda (rec? e r w s mod k)
     (syntax-case e ()
       ((_ ((id val) ...) e1 e2 ...)
        (let ((ids (syntax (id ...))))
                             (trans-r (macros-only-env r)))
                         (map (lambda (x)
                                (make-binding 'macro
-                                 (eval-local-transformer (chi x trans-r w))))
+                                 (eval-local-transformer
+                                  (chi x trans-r w mod)
+                                  mod)))
                              (syntax (val ...))))
                       r)
                     new-w
-                    s))))))
-      (_ (syntax-error (source-wrap e w s))))))
+                    s
+                    mod))))))
+      (_ (syntax-error (source-wrap e w s mod))))))
 
 (define eval-local-transformer
-  (lambda (expanded)
-    (let ((p (local-eval-hook expanded)))
+  (lambda (expanded mod)
+    (let ((p (local-eval-hook expanded mod)))
       (if (procedure? p)
           p
           (syntax-error p "nonprocedure transformer")))))
   (lambda (vars)
     (let lvl ((vars vars) (ls '()) (w empty-wrap))
        (cond
-         ((pair? vars) (lvl (cdr vars) (cons (wrap (car vars) w) ls) w))
-         ((id? vars) (cons (wrap vars w) ls))
+         ((pair? vars) (lvl (cdr vars) (cons (wrap (car vars) w #f) ls) w))
+         ((id? vars) (cons (wrap vars w #f) ls))
          ((null? vars) ls)
          ((syntax-object? vars)
           (lvl (syntax-object-expression vars)
 (global-extend 'local-syntax 'let-syntax #f)
 
 (global-extend 'core 'fluid-let-syntax
-  (lambda (e r w s)
+  (lambda (e r w s mod)
     (syntax-case e ()
       ((_ ((var val) ...) e1 e2 ...)
        (valid-bound-ids? (syntax (var ...)))
            (lambda (id n)
              (case (binding-type (lookup n r))
                ((displaced-lexical)
-                (syntax-error (source-wrap id w s)
+                (syntax-error (source-wrap id w s mod)
                   "identifier out of context"))))
            (syntax (var ...))
            names)
          (chi-body
            (syntax (e1 e2 ...))
-           (source-wrap e w s)
+           (source-wrap e w s mod)
            (extend-env
              names
              (let ((trans-r (macros-only-env r)))
                (map (lambda (x)
                       (make-binding 'macro
-                        (eval-local-transformer (chi x trans-r w))))
+                        (eval-local-transformer (chi x trans-r w mod)
+                                                mod)))
                     (syntax (val ...))))
              r)
-           w)))
-      (_ (syntax-error (source-wrap e w s))))))
+           w
+           mod)))
+      (_ (syntax-error (source-wrap e w s mod))))))
 
 (global-extend 'core 'quote
-   (lambda (e r w s)
+   (lambda (e r w s mod)
       (syntax-case e ()
          ((_ e) (build-data s (strip (syntax e) w)))
-         (_ (syntax-error (source-wrap e w s))))))
+         (_ (syntax-error (source-wrap e w s mod))))))
 
 (global-extend 'core 'syntax
   (let ()
                   (build-primref no-source (car x))
                   (map regen (cdr x)))))))
 
-    (lambda (e r w s)
-      (let ((e (source-wrap e w s)))
+    (lambda (e r w s mod)
+      (let ((e (source-wrap e w s mod)))
         (syntax-case e ()
           ((_ x)
            (call-with-values
              (lambda () (gen-syntax e (syntax x) r '() ellipsis?))
+             ;; It doesn't seem we need `mod' here as `syntax' only
+             ;; references lexical vars and primitives.
              (lambda (e maps) (regen e))))
           (_ (syntax-error e)))))))
 
 
 (global-extend 'core 'lambda
-   (lambda (e r w s)
+   (lambda (e r w s mod)
       (syntax-case e ()
          ((_ . c)
-          (chi-lambda-clause (source-wrap e w s) (syntax c) r w
+          (chi-lambda-clause (source-wrap e w s mod) (syntax c) r w mod
             (lambda (vars body) (build-lambda s vars body)))))))
 
 
 (global-extend 'core 'let
   (let ()
-    (define (chi-let e r w s constructor ids vals exps)
+    (define (chi-let e r w s mod constructor ids vals exps)
       (if (not (valid-bound-ids? ids))
          (syntax-error e "duplicate bound variable in")
          (let ((labels (gen-labels ids))
                  (nr (extend-var-env labels new-vars r)))
              (constructor s
                           new-vars
-                          (map (lambda (x) (chi x r w)) vals)
-                          (chi-body exps (source-wrap e nw s) nr nw))))))
-    (lambda (e r w s)
+                          (map (lambda (x) (chi x r w mod)) vals)
+                          (chi-body exps (source-wrap e nw s mod)
+                                     nr nw mod))))))
+    (lambda (e r w s mod)
       (syntax-case e ()
        ((_ ((id val) ...) e1 e2 ...)
-        (chi-let e r w s
+        (chi-let e r w s mod
                  build-let
                  (syntax (id ...))
                  (syntax (val ...))
                  (syntax (e1 e2 ...))))
        ((_ f ((id val) ...) e1 e2 ...)
         (id? (syntax f))
-        (chi-let e r w s
+        (chi-let e r w s mod
                  build-named-let
                  (syntax (f id ...))
                  (syntax (val ...))
                  (syntax (e1 e2 ...))))
-       (_ (syntax-error (source-wrap e w s)))))))
+       (_ (syntax-error (source-wrap e w s mod)))))))
 
 
 (global-extend 'core 'letrec
-  (lambda (e r w s)
+  (lambda (e r w s mod)
     (syntax-case e ()
       ((_ ((id val) ...) e1 e2 ...)
        (let ((ids (syntax (id ...))))
                     (r (extend-var-env labels new-vars r)))
                  (build-letrec s
                    new-vars
-                   (map (lambda (x) (chi x r w)) (syntax (val ...)))
-                   (chi-body (syntax (e1 e2 ...)) (source-wrap e w s) r w)))))))
-      (_ (syntax-error (source-wrap e w s))))))
+                   (map (lambda (x) (chi x r w mod)) (syntax (val ...)))
+                   (chi-body (syntax (e1 e2 ...)) 
+                             (source-wrap e w s mod) r w mod)))))))
+      (_ (syntax-error (source-wrap e w s mod))))))
 
 
 (global-extend 'core 'set!
-  (lambda (e r w s)
+  (lambda (e r w s mod)
     (syntax-case e ()
       ((_ id val)
        (id? (syntax id))
-       (let ((val (chi (syntax val) r w))
+       (let ((val (chi (syntax val) r w mod))
              (n (id-var-name (syntax id) w)))
          (let ((b (lookup n r)))
            (case (binding-type b)
              ((lexical)
               (build-lexical-assignment s (binding-value b) val))
-             ((global) (build-global-assignment s n val))
+             ((global) (build-global-assignment s n val mod))
              ((displaced-lexical)
-              (syntax-error (wrap (syntax id) w)
+              (syntax-error (wrap (syntax id) w #f)
                 "identifier out of context"))
-             (else (syntax-error (source-wrap e w s)))))))
+             (else (syntax-error (source-wrap e w s mod)))))))
       ((_ (getter arg ...) val)
        (build-application s
-                         (chi (syntax (setter getter)) r w)
-                         (map (lambda (e) (chi e r w))
+                         (chi (syntax (setter getter)) r w mod)
+                         (map (lambda (e) (chi e r w mod))
                               (syntax (arg ... val)))))
-      (_ (syntax-error (source-wrap e w s))))))
+      (_ (syntax-error (source-wrap e w s mod))))))
 
 (global-extend 'begin 'begin '())
 
                 (x (values (vector 'atom (strip p empty-wrap)) ids)))))))
 
     (define build-dispatch-call
-      (lambda (pvars exp y r)
+      (lambda (pvars exp y r mod)
         (let ((ids (map car pvars)) (levels (map cdr pvars)))
           (let ((labels (gen-labels ids)) (new-vars (map gen-var ids)))
             (build-application no-source
               (build-primref no-source 'apply)
               (list (build-lambda no-source new-vars
                       (chi exp
-                         (extend-env
-                             labels
-                             (map (lambda (var level)
-                                    (make-binding 'syntax `(,var . ,level)))
-                                  new-vars
-                                  (map cdr pvars))
-                             r)
-                           (make-binding-wrap ids labels empty-wrap)))
+                           (extend-env
+                            labels
+                            (map (lambda (var level)
+                                   (make-binding 'syntax `(,var . ,level)))
+                                 new-vars
+                                 (map cdr pvars))
+                            r)
+                           (make-binding-wrap ids labels empty-wrap)
+                           mod))
                     y))))))
 
     (define gen-clause
-      (lambda (x keys clauses r pat fender exp)
+      (lambda (x keys clauses r pat fender exp mod)
         (call-with-values
           (lambda () (convert-pattern pat keys))
           (lambda (p pvars)
                            (#t y)
                            (_ (build-conditional no-source
                                 y
-                                (build-dispatch-call pvars fender y r)
+                                (build-dispatch-call pvars fender y r mod)
                                 (build-data no-source #f))))
-                         (build-dispatch-call pvars exp y r)
-                         (gen-syntax-case x keys clauses r))))
+                         (build-dispatch-call pvars exp y r mod)
+                         (gen-syntax-case x keys clauses r mod))))
                    (list (if (eq? p 'any)
                              (build-application no-source
                                (build-primref no-source 'list)
                                (list x (build-data no-source p)))))))))))))
 
     (define gen-syntax-case
-      (lambda (x keys clauses r)
+      (lambda (x keys clauses r mod)
         (if (null? clauses)
             (build-application no-source
               (build-primref no-source 'syntax-error)
                                 (list (make-binding 'syntax `(,var . 0)))
                                 r)
                               (make-binding-wrap (syntax (pat))
-                                labels empty-wrap)))
+                                labels empty-wrap)
+                              mod))
                        (list x)))
                    (gen-clause x keys (cdr clauses) r
-                     (syntax pat) #t (syntax exp))))
+                     (syntax pat) #t (syntax exp) mod)))
               ((pat fender exp)
                (gen-clause x keys (cdr clauses) r
-                 (syntax pat) (syntax fender) (syntax exp)))
+                 (syntax pat) (syntax fender) (syntax exp) mod))
               (_ (syntax-error (car clauses) "invalid syntax-case clause"))))))
 
-    (lambda (e r w s)
-      (let ((e (source-wrap e w s)))
+    (lambda (e r w s mod)
+      (let ((e (source-wrap e w s mod)))
         (syntax-case e ()
           ((_ val (key ...) m ...)
            (if (andmap (lambda (x) (and (id? x) (not (ellipsis? x))))
                    (build-lambda no-source (list x)
                      (gen-syntax-case (build-lexical-reference 'value no-source x)
                        (syntax (key ...)) (syntax (m ...))
-                       r))
-                   (list (chi (syntax val) r empty-wrap))))
+                       r
+                       mod))
+                   (list (chi (syntax val) r empty-wrap mod))))
                (syntax-error e "invalid literals list in"))))))))
 
 ;;; The portable sc-expand seeds chi-top's mode m with 'e (for
     (lambda (x)
       (if (and (pair? x) (equal? (car x) noexpand))
           (cadr x)
-          (chi-top x null-env top-wrap m esew)))))
+          (chi-top x null-env top-wrap m esew (current-module))))))
 
 (set! sc-expand3
   (let ((m 'e) (esew '(eval)))
                   (if (null? rest) m (car rest))
                   (if (or (null? rest) (null? (cdr rest)))
                       esew
-                      (cadr rest)))))))
+                      (cadr rest))
+                   (current-module))))))
 
 (set! identifier?
   (lambda (x)
 (set! generate-temporaries
   (lambda (ls)
     (arg-check list? ls 'generate-temporaries)
-    (map (lambda (x) (wrap (gensym-hook) top-wrap)) ls)))
+    (map (lambda (x) (wrap (gensym-hook) top-wrap #f)) ls)))
 
 (set! free-identifier=?
    (lambda (x y)
        (match-each-any (annotation-expression e) w))
       ((pair? e)
        (let ((l (match-each-any (cdr e) w)))
-         (and l (cons (wrap (car e) w) l))))
+         (and l (cons (wrap (car e) w #f) l))))
       ((null? e) '())
       ((syntax-object? e)
        (match-each-any (syntax-object-expression e)
                        (if (null? (car l))
                            r
                            (cons (map car l) (collect (map cdr l)))))))))
-         ((free-id) (and (id? e) (free-id=? (wrap e w) (vector-ref p 1)) r))
+         ((free-id) (and (id? e) (free-id=? (wrap e w #f) (vector-ref p 1)) r))
          ((atom) (and (equal? (vector-ref p 1) (strip e w)) r))
          ((vector)
           (and (vector? e)
   (lambda (e p w r)
     (cond
       ((not r) #f)
-      ((eq? p 'any) (cons (wrap e w) r))
+      ((eq? p 'any) (cons (wrap e w #f) r))
       ((syntax-object? e)
        (match*
          (unannotate (syntax-object-expression e))
index 63b3a52..ec6da56 100644 (file)
 
 (define guile-macro
   (cons 'external-macro
-       (lambda (e r w s)
+       (lambda (e r w s mod)
          (let ((e (syntax-object->datum e)))
            (if (symbol? e)
                ;; pass the expression through
                            e
                            (if (null? r)
                                (sc-expand e)
-                               (sc-chi e r w)))))))))))
+                               (sc-chi e r w mod)))))))))))
 
 (define generated-symbols (make-weak-key-hash-table 1019))
 
                  (set! old-debug (debug-options))
                  (set! old-read (read-options)))
                (lambda ()
-                 (debug-disable 'debug 'procnames)
-                 (read-disable 'positions)
+                  (debug-disable 'debug 'procnames)
+                  (read-disable 'positions)
                  (load-from-path "ice-9/psyntax-pp"))
                (lambda ()
                  (debug-options old-debug)