;;; syntax.pp ;;; automatically generated from syntax.ss ;;; Wed May 31 00:51:18 2006 ;;; see copyright notice in syntax.ss ((lambda () (letrec* ([eval-hook0 (lambda (x1263) (eval x1263))] [error-hook1 (lambda (who1262 why1261 what1260) (error who1262 '"~a ~s" why1261 what1260))] [gensym-hook2 gensym] [no-source3 '#f] [annotation?4 (lambda (x1259) '#f)] [annotation-expression5 (lambda (x1258) x1258)] [annotation-source6 (lambda (x1257) no-source3)] [strip-annotation7 (lambda (x1256) x1256)] [globals8 '()] [global-extend9 (lambda (type1255 sym1254 value1253) (set! globals8 (cons (cons sym1254 (make-binding110 type1255 value1253)) globals8)))] [global-lookup10 (lambda (sym1251) ((lambda (t1252) (if t1252 (cdr t1252) (cons 'global sym1251))) (assq sym1251 globals8)))] [build-application11 (lambda (src1250 proc-expr1249 arg-expr*1248) (cons proc-expr1249 arg-expr*1248))] [build-global-reference25 (lambda (src1247 var1246) var1246)] [build-lexical-reference26 (lambda (src1245 var1244) var1244)] [build-lexical-assignment27 (lambda (src1243 var1242 expr1241) (cons 'set! (cons var1242 (cons expr1241 '()))))] [build-global-assignment28 (lambda (src1240 var1239 expr1238) (cons 'set! (cons var1239 (cons expr1238 '()))))] [build-lambda29 (lambda (src1234 var*1233 rest?1232 expr1231) (cons 'lambda (cons (if rest?1232 ((letrec ([f1235 (lambda (var1237 var*1236) (if (pair? var*1236) (cons var1237 (f1235 (car var*1236) (cdr var*1236))) var1237))]) f1235) (car var*1233) (cdr var*1233)) var*1233) (cons expr1231 '()))))] [build-primref30 (lambda (src1230 name1229) name1229)] [build-data31 (lambda (src1228 datum1227) (cons 'quote (cons datum1227 '())))] [build-sequence32 (lambda (src1224 expr*1223) ((letrec ([loop1225 (lambda (expr*1226) (if (null? (cdr expr*1226)) (car expr*1226) (cons 'begin (append expr*1226 '()))))]) loop1225) expr*1223))] [build-letrec33 (lambda (src1222 var*1221 rhs-expr*1220 body-expr1219) (if (null? var*1221) body-expr1219 (cons 'letrec (cons (map list var*1221 rhs-expr*1220) (cons body-expr1219 '())))))] [build-letrec*34 (lambda (src1218 var*1217 rhs-expr*1216 body-expr1215) (if (null? var*1217) body-expr1215 (cons 'letrec* (cons (map list var*1217 rhs-expr*1216) (cons body-expr1215 '())))))] [build-lexical-var35 (lambda (src1214 id1213) (gensym))] [self-evaluating?36 (lambda (x1209) ((lambda (t1210) (if t1210 t1210 ((lambda (t1211) (if t1211 t1211 ((lambda (t1212) (if t1212 t1212 (char? x1209))) (string? x1209)))) (number? x1209)))) (boolean? x1209)))] [andmap37 (lambda (f1203 ls1202 . more1201) ((letrec ([andmap1204 (lambda (ls1207 more1206 a1205) (if (null? ls1207) a1205 ((lambda (a1208) (if a1208 (andmap1204 (cdr ls1207) (map cdr more1206) a1208) '#f)) (apply f1203 (car ls1207) (map car more1206)))))]) andmap1204) ls1202 more1201 '#t))] [make-syntax-object77 (lambda (expression1200 mark*1199 subst*1198) (vector 'syntax-object expression1200 mark*1199 subst*1198))] [syntax-object?78 (lambda (x1197) (if (vector? x1197) (if (= (vector-length x1197) '4) (eq? (vector-ref x1197 '0) 'syntax-object) '#f) '#f))] [syntax-object-expression79 (lambda (x1196) (vector-ref x1196 '1))] [syntax-object-mark*80 (lambda (x1195) (vector-ref x1195 '2))] [syntax-object-subst*81 (lambda (x1194) (vector-ref x1194 '3))] [set-syntax-object-expression!82 (lambda (x1193 update1192) (vector-set! x1193 '1 update1192))] [set-syntax-object-mark*!83 (lambda (x1191 update1190) (vector-set! x1191 '2 update1190))] [set-syntax-object-subst*!84 (lambda (x1189 update1188) (vector-set! x1189 '3 update1188))] [strip85 (lambda (x1181 m*1180) (if (top-marked?89 m*1180) (strip-annotation7 x1181) ((letrec ([f1182 (lambda (x1183) (if (syntax-object?78 x1183) (strip85 (syntax-object-expression79 x1183) (syntax-object-mark*80 x1183)) (if (pair? x1183) ((lambda (a1185 d1184) (if (if (eq? a1185 (car x1183)) (eq? d1184 (cdr x1183)) '#f) x1183 (cons a1185 d1184))) (f1182 (car x1183)) (f1182 (cdr x1183))) (if (vector? x1183) ((lambda (old1186) ((lambda (new1187) (if (andmap37 eq? old1186 new1187) x1183 (list->vector new1187))) (map f1182 old1186))) (vector->list x1183)) x1183))))]) f1182) x1181)))] [source86 (lambda (e1179) (if (syntax-object?78 e1179) (source86 (syntax-object-expression79 e1179)) (if (annotation?4 e1179) (annotation-source6 e1179) no-source3)))] [unannotate87 (lambda (x1178) (if (annotation?4 x1178) (annotation-expression5 x1178) x1178))] [top-mark*88 '(top)] [top-marked?89 (lambda (m*1177) (memq (car top-mark*88) m*1177))] [gen-mark90 (lambda () (string '#\m))] [anti-mark91 '#f] [add-mark92 (lambda (m1176 e1175) (syntax-object97 e1175 (list m1176) '(shift)))] [same-marks?93 (lambda (x1173 y1172) ((lambda (t1174) (if t1174 t1174 (if (if (not (null? x1173)) (not (null? y1172)) '#f) (if (eq? (car x1173) (car y1172)) (same-marks?93 (cdr x1173) (cdr y1172)) '#f) '#f))) (eq? x1173 y1172)))] [top-subst*94 '()] [add-subst95 (lambda (subst1171 e1170) (if subst1171 (syntax-object97 e1170 '() (list subst1171)) e1170))] [join-wraps96 (lambda (m1*1161 s1*1160 e1159) (letrec* ([cancel1162 (lambda (ls11166 ls21165) ((letrec ([f1167 (lambda (x1169 ls11168) (if (null? ls11168) (cdr ls21165) (cons x1169 (f1167 (car ls11168) (cdr ls11168)))))]) f1167) (car ls11166) (cdr ls11166)))]) ((lambda (m2*1164 s2*1163) (if (if (not (null? m1*1161)) (if (not (null? m2*1164)) (eq? (car m2*1164) anti-mark91) '#f) '#f) (values (cancel1162 m1*1161 m2*1164) (cancel1162 s1*1160 s2*1163)) (values (append m1*1161 m2*1164) (append s1*1160 s2*1163)))) (syntax-object-mark*80 e1159) (syntax-object-subst*81 e1159))))] [syntax-object97 (lambda (e1156 m*1155 s*1154) (if (syntax-object?78 e1156) (call-with-values (lambda () (join-wraps96 m*1155 s*1154 e1156)) (lambda (m*1158 s*1157) (make-syntax-object77 (syntax-object-expression79 e1156) m*1158 s*1157))) (make-syntax-object77 e1156 m*1155 s*1154)))] [make-rib98 (lambda (sym*1153 mark**1152 label*1151) (vector 'rib sym*1153 mark**1152 label*1151))] [rib?99 (lambda (x1150) (if (vector? x1150) (if (= (vector-length x1150) '4) (eq? (vector-ref x1150 '0) 'rib) '#f) '#f))] [rib-sym*100 (lambda (x1149) (vector-ref x1149 '1))] [rib-mark**101 (lambda (x1148) (vector-ref x1148 '2))] [rib-label*102 (lambda (x1147) (vector-ref x1147 '3))] [set-rib-sym*!103 (lambda (x1146 update1145) (vector-set! x1146 '1 update1145))] [set-rib-mark**!104 (lambda (x1144 update1143) (vector-set! x1144 '2 update1143))] [set-rib-label*!105 (lambda (x1142 update1141) (vector-set! x1142 '3 update1141))] [make-empty-rib106 (lambda () (make-rib98 '() '() '()))] [extend-rib!107 (lambda (rib1140 id1139 label1138) (begin (set-rib-sym*!103 rib1140 (cons (id->sym120 id1139) (rib-sym*100 rib1140))) (set-rib-mark**!104 rib1140 (cons (syntax-object-mark*80 id1139) (rib-mark**101 rib1140))) (set-rib-label*!105 rib1140 (cons label1138 (rib-label*102 rib1140)))))] [make-full-rib108 (lambda (id*1131 label*1130) (if (not (null? id*1131)) (call-with-values (lambda () ((letrec ([f1134 (lambda (id*1135) (if (null? id*1135) (values '() '()) (call-with-values (lambda () (f1134 (cdr id*1135))) (lambda (sym*1137 mark**1136) (values (cons (id->sym120 (car id*1135)) sym*1137) (cons (syntax-object-mark*80 (car id*1135)) mark**1136))))))]) f1134) id*1131)) (lambda (sym*1133 mark**1132) (make-rib98 sym*1133 mark**1132 label*1130))) '#f))] [gen-label109 (lambda () (string '#\i))] [make-binding110 cons] [binding-type111 car] [binding-value112 cdr] [null-env113 '()] [extend-env114 (lambda (label1129 binding1128 r1127) (cons (cons label1129 binding1128) r1127))] [extend-env*115 (lambda (label*1126 binding*1125 r1124) (if (null? label*1126) r1124 (extend-env*115 (cdr label*1126) (cdr binding*1125) (extend-env114 (car label*1126) (car binding*1125) r1124))))] [extend-var-env*116 (lambda (label*1123 var*1122 r1121) (if (null? label*1123) r1121 (extend-var-env*116 (cdr label*1123) (cdr var*1122) (extend-env114 (car label*1123) (make-binding110 'lexical (car var*1122)) r1121))))] [displaced-lexical-error117 (lambda (id1120) (syntax-error id1120 '"identifier out of context"))] [eval-transformer118 (lambda (x1118) ((lambda (x1119) (if (procedure? x1119) (make-binding110 'macro x1119) (if (if (pair? x1119) (if (eq? (car x1119) 'macro!) (procedure? (cdr x1119)) '#f) '#f) x1119 (syntax-error b '"invalid transformer")))) (eval-hook0 x1118)))] [id?119 (lambda (x1117) (if (syntax-object?78 x1117) (id?119 (syntax-object-expression79 x1117)) (symbol? (unannotate87 x1117))))] [id->sym120 (lambda (x1116) (if (syntax-object?78 x1116) (id->sym120 (syntax-object-expression79 x1116)) (unannotate87 x1116)))] [gen-var121 (lambda (id1115) (build-lexical-var35 (source86 id1115) (id->sym120 id1115)))] [id->label122 (lambda (id1106) ((lambda (sym1107) ((letrec ([search1108 (lambda (subst*1110 mark*1109) (if (null? subst*1110) sym1107 ((lambda (subst1111) (if (eq? subst1111 'shift) (search1108 (cdr subst*1110) (cdr mark*1109)) ((letrec ([search-rib1112 (lambda (sym*1114 i1113) (if (null? sym*1114) (search1108 (cdr subst*1110) mark*1109) (if (if (eq? (car sym*1114) sym1107) (same-marks?93 mark*1109 (list-ref (rib-mark**101 subst1111) i1113)) '#f) (list-ref (rib-label*102 subst1111) i1113) (search-rib1112 (cdr sym*1114) (+ i1113 '1)))))]) search-rib1112) (rib-sym*100 subst1111) '0))) (car subst*1110))))]) search1108) (syntax-object-subst*81 id1106) (syntax-object-mark*80 id1106))) (id->sym120 id1106)))] [label->binding123 (lambda (x1104 r1103) (if (symbol? x1104) (global-lookup10 x1104) ((lambda (t1105) (if t1105 (cdr t1105) (make-binding110 'displaced-lexical '#f))) (assq x1104 r1103))))] [free-id=?124 (lambda (i1102 j1101) (eq? (id->label122 i1102) (id->label122 j1101)))] [bound-id=?125 (lambda (i1100 j1099) (if (eq? (id->sym120 i1100) (id->sym120 j1099)) (same-marks?93 (syntax-object-mark*80 i1100) (syntax-object-mark*80 j1099)) '#f))] [bound-id-member?126 (lambda (x1097 list1096) (if (not (null? list1096)) ((lambda (t1098) (if t1098 t1098 (bound-id-member?126 x1097 (cdr list1096)))) (bound-id=?125 x1097 (car list1096))) '#f))] [valid-bound-ids?127 (lambda (id*1092) (if ((letrec ([all-ids?1093 (lambda (id*1094) ((lambda (t1095) (if t1095 t1095 (if (id?119 (car id*1094)) (all-ids?1093 (cdr id*1094)) '#f))) (null? id*1094)))]) all-ids?1093) id*1092) (distinct-bound-ids?128 id*1092) '#f))] [distinct-bound-ids?128 (lambda (id*1088) ((letrec ([distinct?1089 (lambda (id*1090) ((lambda (t1091) (if t1091 t1091 (if (not (bound-id-member?126 (car id*1090) (cdr id*1090))) (distinct?1089 (cdr id*1090)) '#f))) (null? id*1090)))]) distinct?1089) id*1088))] [invalid-ids-error129 (lambda (id*1084 e1083 class1082) ((letrec ([find1085 (lambda (id*1087 ok*1086) (if (null? id*1087) (syntax-error e1083) (if (id?119 (car id*1087)) (if (bound-id-member?126 (car id*1087) ok*1086) (syntax-error (car id*1087) '"duplicate " class1082) (find1085 (cdr id*1087) (cons (car id*1087) ok*1086))) (syntax-error (car id*1087) '"invalid " class1082))))]) find1085) id*1084 '()))]) (begin ((lambda () (letrec* ([syntax-type595 (lambda (e1065 r1064) ((lambda (tmp1066) ((lambda (tmp1067) (if (if tmp1067 (apply (lambda (id1068) (id?119 id1068)) tmp1067) '#f) (apply (lambda (id1069) ((lambda (label1070) ((lambda (b1071) ((lambda (type1072) ((lambda (t1073) (if (memv t1073 '(macro macro!)) (values type1072 (binding-value112 b1071) id1069) (if (memv t1073 '(lexical global syntax displaced-lexical)) (values type1072 (binding-value112 b1071) '#f) (values 'other '#f '#f)))) type1072)) (binding-type111 b1071))) (label->binding123 label1070 r1064))) (id->label122 id1069))) tmp1067) ((lambda (tmp1074) (if tmp1074 (apply (lambda (id1076 rest1075) (if (id?119 id1076) ((lambda (label1077) ((lambda (b1078) ((lambda (type1079) ((lambda (t1080) (if (memv t1080 '(macro macro! core begin define define-syntax local-syntax)) (values type1079 (binding-value112 b1078) id1076) (values 'call '#f '#f))) type1079)) (binding-type111 b1078))) (label->binding123 label1077 r1064))) (id->label122 id1076)) (values 'call '#f '#f))) tmp1074) ((lambda (d1081) (if (self-evaluating?36 d1081) (values 'constant d1081 '#f) (values 'other '#f '#f))) (strip85 e1065 '())))) ($syntax-dispatch tmp1066 '(any . any))))) ($syntax-dispatch tmp1066 'any))) e1065))] [chi596 (lambda (e1056 r1055 mr1054) (call-with-values (lambda () (syntax-type595 e1056 r1055)) (lambda (type1059 value1058 kwd1057) ((lambda (t1060) (if (memv t1060 '(lexical)) (build-lexical-reference26 (source86 e1056) value1058) (if (memv t1060 '(global)) (build-global-reference25 (source86 e1056) value1058) (if (memv t1060 '(core)) (value1058 e1056 r1055 mr1054) (if (memv t1060 '(constant)) (build-data31 (source86 e1056) value1058) (if (memv t1060 '(call)) (chi-application598 e1056 r1055 mr1054) (if (memv t1060 '(begin)) (build-sequence32 (source86 e1056) (chi-exprs597 (parse-begin603 e1056 '#f) r1055 mr1054)) (if (memv t1060 '(macro macro!)) (chi596 (chi-macro599 value1058 e1056) r1055 mr1054) (if (memv t1060 '(local-syntax)) (call-with-values (lambda () (chi-local-syntax604 value1058 e1056 r1055 mr1054)) (lambda (e*1063 r1062 mr1061) (build-sequence32 (source86 e1056) (chi-exprs597 e*1063 r1062 mr1061)))) (if (memv t1060 '(define)) (begin (parse-define601 e1056) (syntax-error e1056 '"invalid context for definition")) (if (memv t1060 '(define-syntax)) (begin (parse-define-syntax602 e1056) (syntax-error e1056 '"invalid context for definition")) (if (memv t1060 '(syntax)) (syntax-error e1056 '"reference to pattern variable outside syntax form") (if (memv t1060 '(displaced-lexical)) (displaced-lexical-error117 e1056) (syntax-error e1056)))))))))))))) type1059))))] [chi-exprs597 (lambda (x*1052 r1051 mr1050) (map (lambda (x1053) (chi596 x1053 r1051 mr1050)) x*1052))] [chi-application598 (lambda (e1044 r1043 mr1042) ((lambda (tmp1045) ((lambda (tmp1046) (if tmp1046 (apply (lambda (e01048 e11047) (build-application11 (source86 e1044) (chi596 e01048 r1043 mr1042) (chi-exprs597 e11047 r1043 mr1042))) tmp1046) (syntax-error tmp1045))) ($syntax-dispatch tmp1045 '(any . each-any)))) e1044))] [chi-macro599 (lambda (p1041 e1040) (add-mark92 (gen-mark90) (p1041 (add-mark92 anti-mark91 e1040))))] [chi-body600 (lambda (outer-e1012 e*1011 r1010 mr1009) ((lambda (rib1013) ((letrec ([parse1015 (lambda (e*1022 r1021 mr1020 id*1019 var*1018 rhs*1017 kwd*1016) (if (null? e*1022) (syntax-error outer-e1012 '"no expressions in body") ((lambda (e1023) (call-with-values (lambda () (syntax-type595 e1023 r1021)) (lambda (type1026 value1025 kwd1024) ((lambda (kwd*1027) ((lambda (t1028) (if (memv t1028 '(define)) (call-with-values (lambda () (parse-define601 e1023)) (lambda (id1030 rhs1029) (begin (if (bound-id-member?126 id1030 kwd*1027) (syntax-error id1030 '"undefined identifier") (void)) ((lambda (label1032 var1031) (begin (extend-rib!107 rib1013 id1030 label1032) (parse1015 (cdr e*1022) (extend-env114 label1032 (make-binding110 'lexical var1031) r1021) mr1020 (cons id1030 id*1019) (cons var1031 var*1018) (cons rhs1029 rhs*1017) kwd*1027))) (gen-label109) (gen-var121 id1030))))) (if (memv t1028 '(define-syntax)) (call-with-values (lambda () (parse-define-syntax602 e1023)) (lambda (id1034 rhs1033) (begin (if (bound-id-member?126 id1034 kwd*1027) (syntax-error id1034 '"undefined identifier") (void)) ((lambda (label1035) (begin (extend-rib!107 rib1013 id1034 label1035) ((lambda (b1036) (parse1015 (cdr e*1022) (extend-env114 label1035 b1036 r1021) (extend-env114 label1035 b1036 mr1020) (cons id1034 id*1019) var*1018 rhs*1017 kwd*1027)) (eval-transformer118 (chi596 rhs1033 mr1020 mr1020))))) (gen-label109))))) (if (memv t1028 '(begin)) (parse1015 (append (parse-begin603 e1023 '#t) (cdr e*1022)) r1021 mr1020 id*1019 var*1018 rhs*1017 kwd*1027) (if (memv t1028 '(macro macro!)) (parse1015 (cons (add-subst95 rib1013 (chi-macro599 value1025 e1023)) (cdr e*1022)) r1021 mr1020 id*1019 var*1018 rhs*1017 kwd*1027) (if (memv t1028 '(local-syntax)) (call-with-values (lambda () (chi-local-syntax604 value1025 e1023 r1021 mr1020)) (lambda (new-e*1039 r1038 mr1037) (parse1015 (append new-e*1039 (cdr e*1022)) r1038 mr1037 id*1019 var*1018 rhs*1017 kwd*1027))) (begin (if (not (valid-bound-ids?127 id*1019)) (invalid-ids-error129 id*1019 outer-e1012 '"locally defined identifier") (void)) (build-letrec*34 no-source3 (reverse var*1018) (chi-exprs597 (reverse rhs*1017) r1021 mr1020) (build-sequence32 no-source3 (chi-exprs597 (cons e1023 (cdr e*1022)) r1021 mr1020)))))))))) type1026)) (cons kwd1024 kwd*1016))))) (car e*1022))))]) parse1015) (map (lambda (e1014) (add-subst95 rib1013 e1014)) e*1011) r1010 mr1009 '() '() '() '())) (make-empty-rib106)))] [parse-define601 (lambda (e978) (letrec* ([valid-args?979 (lambda (args999) (valid-bound-ids?127 ((lambda (tmp1000) ((lambda (tmp1001) (if tmp1001 (apply (lambda (id1002) id1002) tmp1001) ((lambda (tmp1004) (if tmp1004 (apply (lambda (id1006 r1005) (append id1006 (cons r1005 '#(syntax-object () (top) ())))) tmp1004) ((lambda (id1008) (cons id1008 '#(syntax-object () (top) ()))) tmp1000))) ($syntax-dispatch tmp1000 '#(each+ any () any))))) ($syntax-dispatch tmp1000 'each-any))) args999)))]) ((lambda (tmp980) ((lambda (tmp981) (if (if tmp981 (apply (lambda (name983 e982) (id?119 name983)) tmp981) '#f) (apply (lambda (name985 e984) (values name985 e984)) tmp981) ((lambda (tmp986) (if (if tmp986 (apply (lambda (name990 args989 e1988 e2987) (if (id?119 name990) (valid-args?979 args989) '#f)) tmp986) '#f) (apply (lambda (name994 args993 e1992 e2991) (values name994 (cons '#(syntax-object lambda (top) ()) (cons args993 (cons e1992 e2991))))) tmp986) ((lambda (tmp996) (if (if tmp996 (apply (lambda (name997) (id?119 name997)) tmp996) '#f) (apply (lambda (name998) (values name998 '#(syntax-object (void) (top) ()))) tmp996) (syntax-error tmp980))) ($syntax-dispatch tmp980 '(_ any))))) ($syntax-dispatch tmp980 '(_ (any . any) any . each-any))))) ($syntax-dispatch tmp980 '(_ any any)))) e978)))] [parse-define-syntax602 (lambda (e971) ((lambda (tmp972) ((lambda (tmp973) (if (if tmp973 (apply (lambda (name975 rhs974) (id?119 name975)) tmp973) '#f) (apply (lambda (name977 rhs976) (values name977 rhs976)) tmp973) (syntax-error tmp972))) ($syntax-dispatch tmp972 '(_ any any)))) e971))] [parse-begin603 (lambda (e964 empty-okay?963) ((lambda (tmp965) ((lambda (tmp966) (if (if tmp966 (apply (lambda () empty-okay?963) tmp966) '#f) (apply (lambda () '()) tmp966) ((lambda (tmp967) (if tmp967 (apply (lambda (e1969 e2968) (cons e1969 e2968)) tmp967) (syntax-error tmp965))) ($syntax-dispatch tmp965 '(_ any . each-any))))) ($syntax-dispatch tmp965 '(_)))) e964))] [chi-local-syntax604 (lambda (rec?944 e943 r942 mr941) ((lambda (tmp945) ((lambda (tmp946) (if tmp946 (apply (lambda (id950 rhs949 e1948 e2947) ((lambda (id*954 rhs*953) (begin (if (not (valid-bound-ids?127 id*954)) (invalid-ids-error129 id*954 e943 '"keyword") (void)) ((lambda (label*956) ((lambda (rib957) ((lambda (b*960) (values (map (lambda (e962) (add-subst95 rib957 e962)) (cons e1948 e2947)) (extend-env*115 label*956 b*960 r942) (extend-env*115 label*956 b*960 mr941))) (map (lambda (x959) (eval-transformer118 (chi596 x959 mr941 mr941))) (if rec?944 (map (lambda (x958) (add-subst95 rib957 x958)) rhs*953) rhs*953)))) (make-full-rib108 id*954 label*956))) (map (lambda (x955) (gen-label109)) id*954)))) id950 rhs949)) tmp946) (syntax-error tmp945))) ($syntax-dispatch tmp945 '(_ #(each (any any)) any . each-any)))) e943))] [ellipsis?605 (lambda (x940) (if (id?119 x940) (free-id=?124 x940 '#(syntax-object ... (top) ())) '#f))]) (begin (set! sc-expand (lambda (x939) (chi596 (syntax-object97 x939 top-mark*88 top-subst*94) null-env113 null-env113))) (global-extend9 'begin 'begin '#f) (global-extend9 'define 'define '#f) (global-extend9 'define-syntax 'define-syntax '#f) (global-extend9 'local-syntax 'letrec-syntax '#t) (global-extend9 'local-syntax 'let-syntax '#f) (global-extend9 'core 'quote (lambda (e935 r934 mr933) ((lambda (tmp936) ((lambda (tmp937) (if tmp937 (apply (lambda (e938) (build-data31 (source86 e938) (strip85 e938 '()))) tmp937) (syntax-error tmp936))) ($syntax-dispatch tmp936 '(_ any)))) e935))) (global-extend9 'core 'lambda (lambda (e904 r903 mr902) (letrec* ([help905 (lambda (var*927 rest?926 e*925) (begin (if (not (valid-bound-ids?127 var*927)) (invalid-ids-error129 var*927 e904 '"parameter") (void)) ((lambda (label*930 new-var*929) (build-lambda29 (source86 e904) new-var*929 rest?926 (chi-body600 e904 ((lambda (rib931) (map (lambda (e932) (add-subst95 rib931 e932)) e*925)) (make-full-rib108 var*927 label*930)) (extend-var-env*116 label*930 new-var*929 r903) mr902))) (map (lambda (x928) (gen-label109)) var*927) (map gen-var121 var*927))))]) ((lambda (tmp906) ((lambda (tmp907) (if tmp907 (apply (lambda (var910 e1909 e2908) (help905 var910 '#f (cons e1909 e2908))) tmp907) ((lambda (tmp913) (if tmp913 (apply (lambda (var917 rvar916 e1915 e2914) (help905 (append var917 (cons rvar916 '())) '#t (cons e1915 e2914))) tmp913) ((lambda (tmp920) (if tmp920 (apply (lambda (var923 e1922 e2921) (help905 (cons var923 '()) '#t (cons e1922 e2921))) tmp920) (syntax-error tmp906))) ($syntax-dispatch tmp906 '(_ any any . each-any))))) ($syntax-dispatch tmp906 '(_ #(each+ any () any) any . each-any))))) ($syntax-dispatch tmp906 '(_ each-any any . each-any)))) e904)))) (global-extend9 'core 'letrec (lambda (e882 r881 mr880) ((lambda (tmp883) ((lambda (tmp884) (if tmp884 (apply (lambda (var888 rhs887 e1886 e2885) ((lambda (var*894 rhs*893 e*892) (begin (if (not (valid-bound-ids?127 var*894)) (invalid-ids-error129 var*894 e882 '"bound variable") (void)) ((lambda (label*897 new-var*896) ((lambda (r899 rib898) (build-letrec33 (source86 e882) new-var*896 (map (lambda (e901) (chi596 (add-subst95 rib898 e901) r899 mr880)) rhs*893) (chi-body600 e882 (map (lambda (e900) (add-subst95 rib898 e900)) e*892) r899 mr880))) (extend-var-env*116 label*897 new-var*896 r881) (make-full-rib108 var*894 label*897))) (map (lambda (x895) (gen-label109)) var*894) (map gen-var121 var*894)))) var888 rhs887 (cons e1886 e2885))) tmp884) (syntax-error tmp883))) ($syntax-dispatch tmp883 '(_ #(each (any any)) any . each-any)))) e882))) (global-extend9 'core 'letrec* (lambda (e860 r859 mr858) ((lambda (tmp861) ((lambda (tmp862) (if tmp862 (apply (lambda (var866 rhs865 e1864 e2863) ((lambda (var*872 rhs*871 e*870) (begin (if (not (valid-bound-ids?127 var*872)) (invalid-ids-error129 var*872 e860 '"bound variable") (void)) ((lambda (label*875 new-var*874) ((lambda (r877 rib876) (build-letrec*34 (source86 e860) new-var*874 (map (lambda (e879) (chi596 (add-subst95 rib876 e879) r877 mr858)) rhs*871) (chi-body600 e860 (map (lambda (e878) (add-subst95 rib876 e878)) e*870) r877 mr858))) (extend-var-env*116 label*875 new-var*874 r859) (make-full-rib108 var*872 label*875))) (map (lambda (x873) (gen-label109)) var*872) (map gen-var121 var*872)))) var866 rhs865 (cons e1864 e2863))) tmp862) (syntax-error tmp861))) ($syntax-dispatch tmp861 '(_ #(each (any any)) any . each-any)))) e860))) (global-extend9 'core 'set! (lambda (e849 r848 mr847) ((lambda (tmp850) ((lambda (tmp851) (if (if tmp851 (apply (lambda (id853 rhs852) (id?119 id853)) tmp851) '#f) (apply (lambda (id855 rhs854) ((lambda (b856) ((lambda (t857) (if (memv t857 '(macro!)) (chi596 (chi-macro599 (binding-value112 b856) e849) r848 mr847) (if (memv t857 '(lexical)) (build-lexical-assignment27 (source86 e849) (binding-value112 b856) (chi596 rhs854 r848 mr847)) (if (memv t857 '(global)) (build-global-assignment28 (source86 e849) (binding-value112 b856) (chi596 rhs854 r848 mr847)) (if (memv t857 '(displaced-lexical)) (displaced-lexical-error117 id855) (syntax-error e849)))))) (binding-type111 b856))) (label->binding123 (id->label122 id855) r848))) tmp851) (syntax-error tmp850))) ($syntax-dispatch tmp850 '(_ any any)))) e849))) (global-extend9 'core 'if (lambda (e838 r837 mr836) ((lambda (tmp839) ((lambda (tmp840) (if tmp840 (apply (lambda (test842 then841) (cons 'if (cons (chi596 test842 r837 mr836) (cons (chi596 then841 r837 mr836) '((void)))))) tmp840) ((lambda (tmp843) (if tmp843 (apply (lambda (test846 then845 else844) (cons 'if (cons (chi596 test846 r837 mr836) (cons (chi596 then845 r837 mr836) (cons (chi596 else844 r837 mr836) '()))))) tmp843) (syntax-error tmp839))) ($syntax-dispatch tmp839 '(_ any any any))))) ($syntax-dispatch tmp839 '(_ any any)))) e838))) (global-extend9 'core 'syntax-case ((lambda () (letrec* ([convert-pattern726 (lambda (pattern785 keys784) (letrec* ([cvt*786 (lambda (p*831 n830 ids829) (if (null? p*831) (values '() ids829) (call-with-values (lambda () (cvt*786 (cdr p*831) n830 ids829)) (lambda (y833 ids832) (call-with-values (lambda () (cvt787 (car p*831) n830 ids832)) (lambda (x835 ids834) (values (cons x835 y833) ids834)))))))] [cvt787 (lambda (p790 n789 ids788) (if (not (id?119 p790)) ((lambda (tmp791) ((lambda (tmp792) (if (if tmp792 (apply (lambda (x794 dots793) (ellipsis?605 dots793)) tmp792) '#f) (apply (lambda (x796 dots795) (call-with-values (lambda () (cvt787 x796 (+ n789 '1) ids788)) (lambda (p798 ids797) (values (if (eq? p798 'any) 'each-any (vector 'each p798)) ids797)))) tmp792) ((lambda (tmp799) (if (if tmp799 (apply (lambda (x803 dots802 y801 z800) (ellipsis?605 dots802)) tmp799) '#f) (apply (lambda (x807 dots806 y805 z804) (call-with-values (lambda () (cvt787 z804 n789 ids788)) (lambda (z809 ids808) (call-with-values (lambda () (cvt*786 y805 n789 ids808)) (lambda (y811 ids810) (call-with-values (lambda () (cvt787 x807 (+ n789 '1) ids810)) (lambda (x813 ids812) (values (list->vector (cons 'each+ (cons x813 (cons (reverse y811) (list z809))))) ids812)))))))) tmp799) ((lambda (tmp815) (if tmp815 (apply (lambda (x817 y816) (call-with-values (lambda () (cvt787 y816 n789 ids788)) (lambda (y819 ids818) (call-with-values (lambda () (cvt787 x817 n789 ids818)) (lambda (x821 ids820) (values (cons x821 y819) ids820)))))) tmp815) ((lambda (tmp822) (if tmp822 (apply (lambda () (values '() ids788)) tmp822) ((lambda (tmp823) (if tmp823 (apply (lambda (x824) (call-with-values (lambda () (cvt787 x824 n789 ids788)) (lambda (p826 ids825)