From c32c9cfe49e68e8d5a651c49d5a112b44be225e7 Mon Sep 17 00:00:00 2001 From: ESL Date: Tue, 7 Mar 2023 17:48:27 -0500 Subject: [PATCH] s.scm library improvements --- i.c | 2 +- i.h | 8 +-- s.c | 175 ++++++++++++++++++++++++++++++++++++++++-------------- src/s.scm | 141 +++++++++++++++++++++++++++++++++++++------ t.c | 64 ++++++++++---------- 5 files changed, 292 insertions(+), 98 deletions(-) diff --git a/i.c b/i.c index 3807194..3c7749e 100644 --- a/i.c +++ b/i.c @@ -931,7 +931,7 @@ define_instruction(vget) { define_instruction(vput) { obj x = spop(), y = spop(); int i; ckv(ac); ckk(x); - i = fixnum_from_obj(spop()); + i = fixnum_from_obj(x); vectorref(ac, i) = y; gonexti(); } diff --git a/i.h b/i.h index 2fd841d..bf877ab 100644 --- a/i.h +++ b/i.h @@ -316,10 +316,10 @@ declare_instruction(eq, "=", 0, "%eq", 2, INLINED) declare_instruction(ne, "=!", 0, "%ne", 2, INLINED) declare_instruction(neg, "-!", 0, "%neg", 1, INLINED) declare_instruction(abs, "G0", 0, "%abs", 1, INLINED) -declare_instruction(mqu, "G3", 0, "%mqu", 1, INLINED) -declare_instruction(mlo, "G4", 0, "%mlo", 1, INLINED) -declare_instruction(quo, "G5", 0, "%quo", 1, INLINED) -declare_instruction(rem, "G6", 0, "%rem", 1, INLINED) +declare_instruction(mqu, "G3", 0, "%mqu", 2, INLINED) +declare_instruction(mlo, "G4", 0, "%mlo", 2, INLINED) +declare_instruction(quo, "G5", 0, "%quo", 2, INLINED) +declare_instruction(rem, "G6", 0, "%rem", 2, INLINED) declare_instruction(nump, "N0", 0, "%nump", 1, INLINED) declare_instruction(intp, "N4", 0, "%intp", 1, INLINED) declare_instruction(nanp, "N5", 0, "%nanp", 1, INLINED) diff --git a/s.c b/s.c index a6718a9..d46fed4 100644 --- a/s.c +++ b/s.c @@ -602,7 +602,7 @@ char *s_code[] = { ";l2:y1:_;y18:%25residual-quotient;;", 0, - "&0{%2.1,.1,@(y4:%25quo)[22}@!(y18:%25residual-quotient)", + "&0{%2.1,.1G5]2}@!(y18:%25residual-quotient)", "remainder", "l5:y12:syntax-rules;n;l2:l3:y1:_;y1:x;y1:y;;l3:y4:%25rem;y1:x;y1:y;;;l" @@ -610,7 +610,7 @@ char *s_code[] = { ";;l2:y1:_;y19:%25residual-remainder;;", 0, - "&0{%2.1,.1,@(y4:%25rem)[22}@!(y19:%25residual-remainder)", + "&0{%2.1,.1G6]2}@!(y19:%25residual-remainder)", "truncate-quotient", "l4:y12:syntax-rules;n;l2:py1:_;y4:args;;py8:quotient;y4:args;;;l2:y1:_" @@ -626,7 +626,7 @@ char *s_code[] = { "2:y1:_;y16:%25residual-modquo;;", 0, - "&0{%2.1,.1,@(y4:%25mqu)[22}@!(y16:%25residual-modquo)", + "&0{%2.1,.1G3]2}@!(y16:%25residual-modquo)", "modulo", "l5:y12:syntax-rules;n;l2:l3:y1:_;y1:x;y1:y;;l3:y4:%25mlo;y1:x;y1:y;;;l" @@ -634,7 +634,7 @@ char *s_code[] = { "2:y1:_;y16:%25residual-modulo;;", 0, - "&0{%2.1,.1,@(y4:%25mlo)[22}@!(y16:%25residual-modulo)", + "&0{%2.1,.1G4]2}@!(y16:%25residual-modulo)", "floor-quotient", "l4:y12:syntax-rules;n;l2:py1:_;y4:args;;py6:modquo;y4:args;;;l2:y1:_;y" @@ -644,6 +644,12 @@ char *s_code[] = { "l4:y12:syntax-rules;n;l2:py1:_;y4:args;;py6:modulo;y4:args;;;l2:y1:_;y" "6:modulo;;", + 0, + "&0{%2.1,.1G4,.2,.2G3,@(y5:%25sdmv)[22}@!(y6:floor/)", + + 0, + "&0{%2.1,.1G6,.2,.2G5,@(y5:%25sdmv)[22}@!(y9:truncate/)", + "boolean?", "l5:y12:syntax-rules;n;l2:l2:y1:_;y1:x;;l2:y6:%25boolp;y1:x;;;l2:py1:_;" "y12:syntax-rules;;py18:%25residual-boolean?;y12:syntax-rules;;;l2:y1:_" @@ -1348,14 +1354,6 @@ char *s_code[] = { "l5:y1:_;y1:x;y1:y;y1:z;y3:...;;l3:y13:vector-append;y1:x;l4:y13:vector" "-append;y1:y;y1:z;y3:...;;;;l2:y1:_;y23:%25residual-vector-append;;", - "vector->list", - "l5:y12:syntax-rules;n;l2:l2:y1:_;y1:x;;l2:y5:%25vtol;y1:x;;;l2:py1:_;y" - "12:syntax-rules;;py22:%25residual-vector->list;y12:syntax-rules;;;l2:y" - "1:_;y22:%25residual-vector->list;;", - - 0, - "&0{%1.0X0]1}@!(y22:%25residual-vector->list)", - "list->vector", "l5:y12:syntax-rules;n;l2:l2:y1:_;y1:x;;l2:y5:%25ltov;y1:x;;;l2:py1:_;y" "12:syntax-rules;;py22:%25residual-list->vector;y12:syntax-rules;;;l2:y" @@ -1364,6 +1362,58 @@ char *s_code[] = { 0, "&0{%1.0X1]1}@!(y22:%25residual-list->vector)", + 0, + "&0{%3n,'1,.4I-,,#0.3,.1,.6,&3{%2:0,.1Ilist)", + + 0, + "&0{%3.2,.2,.2,@(y15:subvector->list)[33}%x,&0{%2.0V3,.2,.2,@(y15:subve" + "ctor->list)[23}%x,&0{%1.0X0]1}%x,&3{|10|21|32%%}@!(y12:vector->list)", + + 0, + "&0{%5.1,.1V3I-,.4I+,.5In,.4,.3I>!?{.4,.3,,#0.3,.7,.6,.3,&4{%2:3,.2Istring)", + + 0, + "&0{%3.2,.2,.2,@(y17:subvector->string)[33}%x,&0{%2.0V3,.2,.2,@(y17:sub" + "vector->string)[23}%x,&0{%1.0V3,'0,.2,@(y17:subvector->string)[13}%x,&" + "3{|10|21|32%%}@!(y14:vector->string)", + "string?", "l5:y12:syntax-rules;n;l2:l2:y1:_;y1:x;;l2:y5:%25strp;y1:x;;;l2:py1:_;y" "12:syntax-rules;;py17:%25residual-string?;y12:syntax-rules;;;l2:y1:_;y" @@ -1411,6 +1461,34 @@ char *s_code[] = { "y1:y;y1:z;y3:...;;l3:y13:string-append;y1:x;l4:y13:string-append;y1:y;" "y1:z;y3:...;;;;l2:y1:_;y23:%25residual-string-append;;", + "list->string", + "l5:y12:syntax-rules;n;l2:l2:y1:_;y1:x;;l2:y5:%25ltos;y1:x;;;l2:py1:_;y" + "12:syntax-rules;;py22:%25residual-list->string;y12:syntax-rules;;;l2:y" + "1:_;y22:%25residual-list->string;;", + + 0, + "&0{%1.0X3]1}@!(y22:%25residual-list->string)", + + 0, + "&0{%3n,'1,.4I-,,#0.3,.1,.6,&3{%2:0,.1Ilist)", + + 0, + "&0{%3.2,.2,.2,@(y15:substring->list)[33}%x,&0{%2.0S3,.2,.2,@(y15:subst" + "ring->list)[23}%x,&0{%1.0X2]1}%x,&3{|10|21|32%%}@!(y12:string->list)", + + 0, + "&0{%5.1,.1S3I-,.4I+,.5In,.4,.3I>!?{.4,.3,,#0.3,.7,.6,.3,&4{%2:3,.2Ivector)", + + 0, + "&0{%3.2,.2,.2,@(y17:substring->vector)[33}%x,&0{%2.0S3,.2,.2,@(y17:sub" + "string->vector)[23}%x,&0{%1.0S3,'0,.2,@(y17:substring->vector)[13}%x,&" + "3{|10|21|32%%}@!(y14:string->vector)", + "string-cmp", "l5:y12:syntax-rules;n;l2:l3:y1:_;y1:x;y1:y;;l3:y5:%25scmp;y1:x;y1:y;;;" "l2:py1:_;y12:syntax-rules;;py20:%25residual-string-cmp;y12:syntax-rule" @@ -1515,22 +1620,6 @@ char *s_code[] = { 0, "&0{%2.1,.1Si=?)", - "string->list", - "l5:y12:syntax-rules;n;l2:l2:y1:_;y1:x;;l2:y5:%25stol;y1:x;;;l2:py1:_;y" - "12:syntax-rules;;py22:%25residual-string->list;y12:syntax-rules;;;l2:y" - "1:_;y22:%25residual-string->list;;", - - 0, - "&0{%1.0X2]1}@!(y22:%25residual-string->list)", - - "list->string", - "l5:y12:syntax-rules;n;l2:l2:y1:_;y1:x;;l2:y5:%25ltos;y1:x;;;l2:py1:_;y" - "12:syntax-rules;;py22:%25residual-list->string;y12:syntax-rules;;;l2:y" - "1:_;y22:%25residual-list->string;;", - - 0, - "&0{%1.0X3]1}@!(y22:%25residual-list->string)", - "fixnum->string", "l5:y12:syntax-rules;n;l2:l3:y1:_;y1:x;y1:r;;l3:y5:%25itos;y1:x;y1:r;;;" "l2:py1:_;y12:syntax-rules;;py24:%25residual-fixnum->string;y12:syntax-" @@ -1621,31 +1710,29 @@ char *s_code[] = { 0, "&0{%!2.0u?{.2S3,'(c ),.1S2,'0,,#0.0,.3,.8,.8,.7,&5{%1:0,.1Ilist),${.5,.8c,,#0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c" - "]1}n]1}.!0.0^_1[01}_1,.4c,@(y13:%25residual-map),@(y5:%25appl)[02}X3]3" - "}@!(y10:string-map)", + ".2,:2S4,:1[01},.1,:3S5.0'1,.1I+,:4^[11}.!0.0^_1[51}${@(y12:string->lis" + "t),${.5,.8c,,#0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0" + "^_1[01}_1,.4c,@(y13:%25residual-map),@(y5:%25appl)[02}X3]3}@!(y10:stri" + "ng-map)", 0, "&0{%!2.0u?{.2V3,f,.1V2,'0,,#0.0,.3,.8,.8,.7,&5{%1:0,.1Ilist),${.5,.8c,,#0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n" - "]1}.!0.0^_1[01}_1,.4c,@(y13:%25residual-map),@(y5:%25appl)[02}X1]3}@!(" - "y10:vector-map)", + "2V4,:1[01},.1,:3V5.0'1,.1I+,:4^[11}.!0.0^_1[51}${@(y12:vector->list),$" + "{.5,.8c,,#0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[" + "01}_1,.4c,@(y13:%25residual-map),@(y5:%25appl)[02}X1]3}@!(y10:vector-m" + "ap)", 0, "&0{%!2.0u?{.2S3,'0,,#0.2,.6,.6,.3,&4{%1:3,.1Ilist),${.3,." - "6c,,#0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1" - ",.2c,@(y18:%25residual-for-each),@(y5:%25appl)[32}@!(y15:string-for-ea" - "ch)", + "01}.1'1,.2I+,:0^[21}.!0.0^_1[41}@(y12:string->list),${.3,.6c,,#0.4,.1," + "&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1,.2c,@(y18:%" + "25residual-for-each),@(y5:%25appl)[32}@!(y15:string-for-each)", 0, "&0{%!2.0u?{.2V3,'0,,#0.2,.6,.6,.3,&4{%1:3,.1Ilist),${.3,." - "6c,,#0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1" - ",.2c,@(y18:%25residual-for-each),@(y5:%25appl)[32}@!(y15:vector-for-ea" - "ch)", + "01}.1'1,.2I+,:0^[21}.!0.0^_1[41}@(y12:vector->list),${.3,.6c,,#0.4,.1," + "&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1,.2c,@(y18:%" + "25residual-for-each),@(y5:%25appl)[32}@!(y15:vector-for-each)", "input-port?", "l5:y12:syntax-rules;n;l2:l2:y1:_;y1:x;;l2:y4:%25ipp;y1:x;;;l2:py1:_;y1" diff --git a/src/s.scm b/src/s.scm index c888050..27f514b 100644 --- a/src/s.scm +++ b/src/s.scm @@ -265,8 +265,11 @@ (define-syntax floor-quotient modquo) (define-syntax floor-remainder modulo) -;floor/ -;truncate/ +(define (floor/ x y) + (%sdmv (floor-quotient x y) (floor-remainder x y))) + +(define (truncate/ x y) + (%sdmv (truncate-quotient x y) (truncate-remainder x y))) ;--------------------------------------------------------------------------------------------- @@ -492,16 +495,68 @@ [(_ x y z ...) (vector-append x (vector-append y z ...))] [_ %residual-vector-append])) -(define-inline (vector->list x) %residual-vector->list (%vtol x)) - (define-inline (list->vector x) %residual-list->vector (%ltov x)) -;vector->list/1/2/3 -;vector-copy/1/2/3=subvector -;vector-copy!/2/3/4/5 (to at from start end) -;vector-fill!/2/3/4 (vector val start end) -;vector->string/1/2/3 -;string->vector/1/2/3 +(define (subvector->list vec start end) + (let loop ([i (fx- end 1)] [l '()]) + (if (fxlist + (case-lambda + [(vec) (%vtol vec)] + [(vec start) (subvector->list vec start (vector-length vec))] + [(vec start end) (subvector->list vec start end)])) + +(define (subvector-copy! to at from start end) + (let ([limit (fxmin end (fx+ start (fx- (vector-length to) at)))]) + (if (fx<=? at start) + (do ([i at (fx+ i 1)] [j start (fx+ j 1)]) + [(fx>=? j limit)] + (vector-set! to i (vector-ref from j))) + (do ([i (fx+ at (fx- (fx- end start) 1)) (fx- i 1)] [j (fx- limit 1) (fx- j 1)]) + [(fx=? i end)] (vector-set! vec i x))) + +(define vector-fill! + (case-lambda + [(vec x) (subvector-fill! vec x 0 (vector-length vec))] + [(vec x start) (subvector-fill! vec x start (vector-length vec))] + [(vec x start end) (subvector-fill! vec x start end)])) + +(define (subvector-string-copy! to at from start end) + (let ([limit (fxmin end (fx+ start (fx- (string-length to) at)))]) + (do ([i at (fx+ i 1)] [j start (fx+ j 1)]) + [(fx>=? j limit) to] + (string-set! to i (vector-ref from j))))) + +(define (subvector->string vec start end) + (subvector-string-copy! (make-string (fx- end start)) 0 vec start end)) + +(define vector->string + (case-lambda + [(vec) (subvector->string vec 0 (vector-length vec))] + [(vec start) (subvector->string vec start (vector-length vec))] + [(vec start end) (subvector->string vec start end)])) ;--------------------------------------------------------------------------------------------- @@ -535,8 +590,66 @@ [(_ x y z ...) (string-append x (string-append y z ...))] [_ %residual-string-append])) +(define-inline (list->string x) %residual-list->string (%ltos x)) + +(define (substring->list str start end) + (let loop ([i (fx- end 1)] [l '()]) + (if (fxlist + (case-lambda + [(str) (%stol str)] + [(str start) (substring->list str start (string-length str))] + [(str start end) (substring->list str start end)])) + +(define (substring-copy! to at from start end) + (let ([limit (fxmin end (fx+ start (fx- (string-length to) at)))]) + (if (fx<=? at start) + (do ([i at (fx+ i 1)] [j start (fx+ j 1)]) + [(fx>=? j limit)] + (string-set! to i (string-ref from j))) + (do ([i (fx+ at (fx- (fx- end start) 1)) (fx- i 1)] [j (fx- limit 1) (fx- j 1)]) + [(fx=? i end)] (string-set! str i c))) + +(define string-fill! + (case-lambda + [(str c) (substring-fill! str c 0 (string-length str))] + [(str c start) (substring-fill! str c start (string-length str))] + [(str c start end) (substring-fill! str c start end)])) + +(define (substring-vector-copy! to at from start end) + (let ([limit (fxmin end (fx+ start (fx- (vector-length to) at)))]) + (do ([i at (fx+ i 1)] [j start (fx+ j 1)]) + [(fx>=? j limit) to] + (vector-set! to i (string-ref from j))))) + +(define (substring->vector str start end) + (substring-vector-copy! (make-vector (fx- end start)) 0 str start end)) + +(define string->vector + (case-lambda + [(str) (substring->vector str 0 (string-length str))] + [(str start) (substring->vector str start (string-length str))] + [(str start end) (substring->vector str start end)])) + (define-inline (string-cmp x y) %residual-string-cmp (%scmp x y)) (define-inline (string=? x y) %residual-string? x y) %residual-string>? (%sigt x y)) (define-inline (string-ci>=? x y) %residual-string>=? (%sige x y)) -(define-inline (string->list x) %residual-string->list (%stol x)) - -(define-inline (list->string x) %residual-list->string (%ltos x)) - ;string-upcase ;string-downcase ;string-foldcase -;string->list/1/2/3 -;string-copy/1/2/3=substring -;string-copy!/2/3/4/5 (to at from start end) -;string-fill!/2/3/4 (string v start end) ;--------------------------------------------------------------------------------------------- diff --git a/t.c b/t.c index 7f79747..f0cda4d 100644 --- a/t.c +++ b/t.c @@ -153,9 +153,9 @@ char *t_code[] = { 0, "&0{%2${.2,,#0.0,&1{%1${.2,@(y3:id?)[01}?{.0,@(y7:id->sym)[11}.0p?{${.2" - "d,:0^[01},${.3a,:0^[01}c]1}.0V0?{:0^,${.3X0,,#0.4,.1,&2{%1.0p?{${.2d,:" - "0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1X1]1}.0]1}.!0.0^_1[01},'(y5:q" - "uote),l2]2}@!(y11:xform-quote)", + "d,:0^[01},${.3a,:0^[01}c]1}.0V0?{:0^,${${.5,@(y12:vector->list)[01},,#" + "0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1X1]1}" + ".0]1}.!0.0^_1[01},'(y5:quote),l2]2}@!(y11:xform-quote)", 0, "&0{%2${.2,.4[01},.0Y0?{.0,'(y3:ref),l2]3}.0,@(y11:binding-val)[31}@!(y" @@ -274,34 +274,36 @@ char *t_code[] = { "}.!1.3,&1{%1.0p?{.0a,:0^[11}f]1}.!2.7,.9,&2{%1:0?{:0,.1q]1}${.2,@(y3:i" "d?)[01}?{@(y30:denotation-of-default-ellipsis),${.3,:1[01}q]1}f]1}.!3." "2,&1{%3n,.2,.2,,#0:0,.1,.8,&3{%3${.2,@(y3:id?)[01}?{.1?{${.2,:0[01}}{f" - "}?{.2,.1c]3}.2]3}.0V0?{.2,.2,.2X0,:1^[33}.0p?{${.2d,:2^[01}?{${.4,.4,." - "4dd,:1^[03},t,.2a,:1^[33}${.4,.4,.4d,:1^[03},.2,.2a,:1^[33}.2]3}.!0.0^" - "_1[33}.!4.4,.2,.4,.3,.(i11),&5{%3.1,.1,.4,:0,:1,:2,:3,:4,&8{%1,#0.1,&1" - "{%0f,:0[01}.!0n,:7,:6,,#0.4,.1,:0,:1,:2,:3,:4,:5,&8{%3,#0:7,.4,&2{%1.0" - "?{:0]1}:1^[10}.!0${.3,@(y3:id?)[01}?{${.3,:2^[01}?{${.4,@(y3:id?)[01}?" - "{${.3,:1[01},${.5,:0[01}q}{f},.1^[41}.3,.3,.3cc]4}.1V0?{.2V0,.0?{.0}{$" - "{:7^[00}}_1.3,.3X0,.3X0,:6^[43}.1p~?{.2,.2e,.1^[41}${.3d,:3^[01}?{.1dd" - "g,.3L0?{.3g}{${:7^[00}},.1,.1I-,.0<0?{${:7^[00}}.0,.6A6,.3,.7A8A6A8,${" - ":4^,t,.(i10)a,:5^[03},,#0.8,:6,&2{%1@(y13:%25residual-cdr),${n,.4,:1a," - ":0^[03},,#0.2,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[" - "21}.!0${.(i12),.6,.(i12)dd,:6^[03},${.3^,${.8,,#0.4,.1,&2{%1.0p?{${.2d" - ",:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1,.5c,@(y14:%25residual-list" - ")c,@(y13:%25residual-map),@(y5:%25appl)[02}L6](i11)}.2p?{${.5,.5d,.5d," - ":6^[03},.3a,.3a,:6^[43}:7^[40}.!0.0^_1[23},@(y4:%25ccc)[31}.!5.7,.2,.6" - ",.5,&4{%3,,,#0#1#2:3,&1{%1${${.4,:0[01},@(y6:new-id)[01},.1c]1},${${.(" - "i10),&1{%1:0,.1A3~]1},t,.(i11),:1^[03},,#0.4,.1,&2{%1.0p?{${.2d,:0^[01" - "},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1.!0${:2^,f,.7,:1^[03}.!1.1,:1,&2{%" - "1:1,&1{%1:0^,.1A0]1},t,.2,:0^[13}.!2.5,.5,,#0.8,.4,.2,.8,:0,&5{%2.0,,#" - "0:0,:1,:2,.6,.4,:3,:4,&7{%1${.2,@(y3:id?)[01}?{:3,.1A3,.0?{.0}{:0,.2A3" - ",.0?{.0}{:1^,.3A3}_1}_1d]1}.0V0?{${.2X0,:2^[01}X1]1}.0p?{${.2d,:6^[01}" - "?{${.2a,:5^[01},,,#0#1:3,&1{%1:0,.1A3d]1}.!0.2,.4,:4,&3{%!0${.2,:2,@(y" - "14:%25residual-cons),@(y13:%25residual-map)[03},:1a,:0^[12}.!1.0^,${.5" - ",,#0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1,$" - "{.6dd,:2^[01},${.3,.6^c,@(y13:%25residual-map),@(y5:%25appl)[02}L6]5}$" - "{.2d,:2^[01},${.3a,:2^[01}c]1}.0]1}.!0.0^_1[21}.!0.0^_1[62}.!6.(i10),." - "7,.7,&3{%2:2,,#0:0,.3,.5,:1,.4,&5{%1.0u?{${:3,'(s14:invalid syntax),'(" - "y9:transform),@(y5:error)[03}}.0a,.0a,.1da,${:2,:3,.5,:4^[03},.0?{.0,." - "0,.3,.5,:1^[63}.4d,:0^[51}.!0.0^_1[21}](i11)}@!(y13:syntax-rules*)", + "}?{.2,.1c]3}.2]3}.0V0?{.2,.2,${.4,@(y12:vector->list)[01},:1^[33}.0p?{" + "${.2d,:2^[01}?{${.4,.4,.4dd,:1^[03},t,.2a,:1^[33}${.4,.4,.4d,:1^[03},." + "2,.2a,:1^[33}.2]3}.!0.0^_1[33}.!4.4,.2,.4,.3,.(i11),&5{%3.1,.1,.4,:0,:" + "1,:2,:3,:4,&8{%1,#0.1,&1{%0f,:0[01}.!0n,:7,:6,,#0.4,.1,:0,:1,:2,:3,:4," + ":5,&8{%3,#0:7,.4,&2{%1.0?{:0]1}:1^[10}.!0${.3,@(y3:id?)[01}?{${.3,:2^[" + "01}?{${.4,@(y3:id?)[01}?{${.3,:1[01},${.5,:0[01}q}{f},.1^[41}.3,.3,.3c" + "c]4}.1V0?{.2V0,.0?{.0}{${:7^[00}}_1.3,${.5,@(y12:vector->list)[01},${." + "5,@(y12:vector->list)[01},:6^[43}.1p~?{.2,.2e,.1^[41}${.3d,:3^[01}?{.1" + "ddg,.3L0?{.3g}{${:7^[00}},.1,.1I-,.0<0?{${:7^[00}}.0,.6A6,.3,.7A8A6A8," + "${:4^,t,.(i10)a,:5^[03},,#0.8,:6,&2{%1@(y13:%25residual-cdr),${n,.4,:1" + "a,:0^[03},,#0.2,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_" + "1[21}.!0${.(i12),.6,.(i12)dd,:6^[03},${.3^,${.8,,#0.4,.1,&2{%1.0p?{${." + "2d,:0^[01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1,.5c,@(y14:%25residual-li" + "st)c,@(y13:%25residual-map),@(y5:%25appl)[02}L6](i11)}.2p?{${.5,.5d,.5" + "d,:6^[03},.3a,.3a,:6^[43}:7^[40}.!0.0^_1[23},@(y4:%25ccc)[31}.!5.7,.2," + ".6,.5,&4{%3,,,#0#1#2:3,&1{%1${${.4,:0[01},@(y6:new-id)[01},.1c]1},${${" + ".(i10),&1{%1:0,.1A3~]1},t,.(i11),:1^[03},,#0.4,.1,&2{%1.0p?{${.2d,:0^[" + "01},${.3a,:1[01}c]1}n]1}.!0.0^_1[01}_1.!0${:2^,f,.7,:1^[03}.!1.1,:1,&2" + "{%1:1,&1{%1:0^,.1A0]1},t,.2,:0^[13}.!2.5,.5,,#0.8,.4,.2,.8,:0,&5{%2.0," + ",#0:0,:1,:2,.6,.4,:3,:4,&7{%1${.2,@(y3:id?)[01}?{:3,.1A3,.0?{.0}{:0,.2" + "A3,.0?{.0}{:1^,.3A3}_1}_1d]1}.0V0?{${${.4,@(y12:vector->list)[01},:2^[" + "01}X1]1}.0p?{${.2d,:6^[01}?{${.2a,:5^[01},,,#0#1:3,&1{%1:0,.1A3d]1}.!0" + ".2,.4,:4,&3{%!0${.2,:2,@(y14:%25residual-cons),@(y13:%25residual-map)[" + "03},:1a,:0^[12}.!1.0^,${.5,,#0.4,.1,&2{%1.0p?{${.2d,:0^[01},${.3a,:1[0" + "1}c]1}n]1}.!0.0^_1[01}_1,${.6dd,:2^[01},${.3,.6^c,@(y13:%25residual-ma" + "p),@(y5:%25appl)[02}L6]5}${.2d,:2^[01},${.3a,:2^[01}c]1}.0]1}.!0.0^_1[" + "21}.!0.0^_1[62}.!6.(i10),.7,.7,&3{%2:2,,#0:0,.3,.5,:1,.4,&5{%1.0u?{${:" + "3,'(s14:invalid syntax),'(y9:transform),@(y5:error)[03}}.0a,.0a,.1da,$" + "{:2,:3,.5,:4^[03},.0?{.0,.0,.3,.5,:1^[63}.4d,:0^[51}.!0.0^_1[21}](i11)" + "}@!(y13:syntax-rules*)", 0, "${&0{%2,#0${${'(y6:syntax),'(y6:syntax),@(y12:make-binding)[02},@(y6:n"