From 12222fe9ee6851feb80c5f2b7980487bea87bf5e Mon Sep 17 00:00:00 2001 From: Stefan Israelsson Tampe Date: Wed, 1 Aug 2018 18:31:01 +0200 Subject: better python 2 formatting conformation --- modules/language/python/compile.scm | 15 +- modules/language/python/module/_python.scm | 328 ++++++++++++++++++++++++++ modules/language/python/module/python.scm | 359 ++--------------------------- modules/language/python/module/re.scm | 70 ++++-- 4 files changed, 409 insertions(+), 363 deletions(-) create mode 100644 modules/language/python/module/_python.scm (limited to 'modules/language/python') diff --git a/modules/language/python/compile.scm b/modules/language/python/compile.scm index 5dbd3e6..af9e137 100644 --- a/modules/language/python/compile.scm +++ b/modules/language/python/compile.scm @@ -18,6 +18,7 @@ #:use-module (language python dir) #:use-module (language python procedure) #:use-module (language python bool) + #:use-module ((language python format2) #:select (perform-formatters init-formatters)) #:use-module ((language python with) #:select ()) #:use-module (ice-9 pretty-print) #:export (comp)) @@ -25,6 +26,7 @@ (define-syntax-rule (aif it p x y) (let ((it p)) (if it x y))) (define-inlinable (C x) `(@@ (language python compile) ,x)) +(define-inlinable (F2 x) `(@@ (language python format2) ,x)) (define-inlinable (N x) `(@@ (language python number) ,x)) (define-inlinable (Y x) `(@@ (language python yield) ,x)) (define-inlinable (T x) `(@@ (language python try) ,x)) @@ -748,6 +750,12 @@ (cons (N 'py-/) (map (g vs exp) l)))) (#:% + ((_ s a) + (let ((s (exp vs s)) + (a (exp vs a))) + (if (string? s) + (list (F2 'format) s a) + (list (N 'py-mod) s a)))) ((_ . l) (cons (N 'py-mod) (map (g vs exp) l)))) @@ -1491,8 +1499,10 @@ ,@start ,(C 'clear-warning-data) (fluid-set! (@@ (system base message) %dont-warn-list) '()) + (,(C 'init-formatters)) ,@(map (lambda (s) `(,(C 'var) ,s)) globs) ,@(map (g globs exp) x) + (,(C 'perform-formatters)) (,(C 'export-all))))) (begin (if (fluid-ref (@@ (system base compile) %in-compile)) @@ -1502,13 +1512,16 @@ (if (pair? start) (set! x (cdr x))) - (let ((globs (get-globals x))) + (let ((globs (get-globals x)) + (res (gensym "res"))) `(begin ,@start ,(C 'clear-warning-data) (fluid-set! (@@ (system base message) %dont-warn-list) '()) ,@(map (lambda (s) `(,(C 'var) ,s)) globs) ,@(map (g globs exp) x)))))) + + (define-syntax-parameter break diff --git a/modules/language/python/module/_python.scm b/modules/language/python/module/_python.scm new file mode 100644 index 0000000..1dd9ff9 --- /dev/null +++ b/modules/language/python/module/_python.scm @@ -0,0 +1,328 @@ +(define-module (language python module _python) + #:use-module (oop goops) + #:use-module (ice-9 match) + #:use-module (ice-9 readline) + #:use-module ((oop pf-objects) #:select + (

class-method static-method ref (set . pf-set) + py-super-mac type object pylist-ref define-python-class + object-method py-dict)) + #:use-module (language python exceptions ) + #:use-module ((language python module string ) #:select ()) + #:use-module ((language python module io ) #:select (open)) + #:use-module (language python def ) + #:use-module (language python for ) + #:use-module (language python try ) + #:use-module (language python yield ) + #:use-module (language python list ) + #:use-module (language python dict ) + #:use-module (language python set ) + #:use-module (language python string ) + #:use-module (language python bytes ) + #:use-module (language python set ) + #:use-module (language python number ) + #:use-module (language python dir ) + #:use-module (language python hash ) + #:use-module (language python property ) + #:use-module (language python range ) + #:use-module (language python tuple ) + #:use-module (language python eval ) + #:use-module (language python bool ) + + #:replace (list abs min max hash round format map filter) + + #:re-export (StopIteration GeneratorExit RuntimeError + Exception ValueError TypeError + IndexError KeyError AttributeError + send sendException next + GeneratorExit sendClose RuntimeError + SyntaxError bool compile + len dir next dict None property range + tuple bytes bytearray eval locals globals + exec type object open + ) + + #:export (print repr complex float int str + set all any bin callable reversed + chr classmethod staticmethod objectmethod + divmod enumerate + getattr hasattr setattr hex isinstance issubclass + iter sum id input oct ord pow super + sorted zip vars + ClassMethod StaticMethod Funcobj)) + +(define-syntax-rule (aif it p x y) (let ((it p)) (if it x y))) + +(define vars py-dict) + +(define print + (case-lambda + (() ((@ (guile) format) #t "~%")) + ((x) ((@ (guile) format) #t "~s~%" x)) + (l ((@ (guile) format) #t "~s~%" l)))) + +(define (repr x) ((@ (guile) format) #f "~a" x)) +(define abs py-abs) +(define str pystring) +(define complex py-complex) +(define float py-float) +(define int py-int) +(define round py-round) +(define set py-set) +(define all py-all) +(define any py-any) +(define bin py-bin) +(define divmod py-divmod) +(define format py-format) +(define hash py-hash) +(define hex py-hex) + +(define-method (callable x ) #f) +(define-method (callable (x )) #t) +(define-method (callable (x )) #t) +(define-method (callable (x )) #t) +(define-method (callable (x )) #t) +(define-method (callable (x

)) + (ref x '__call__)) + +(define chr integer->char) + +(define objectmethod object-method) +(define classmethod class-method) +(define staticmethod static-method) + +(define (enumerate l) + ((make-generator () + (lambda (yield) + (for ((x : l)) ((i 0)) + (yield i x) + (+ i 1)))))) + +(define (filter f l) + ((make-generator () + (lambda (yield) + (for ((x : l)) () + (if (f x) + (yield x))))))) + +(define miss ((@ (guile) list) 'miss)) + +(define* (getattr a b #:optional (k miss)) + (let ((r (ref a (if (string? b) (string->symbol b) b) k))) + (if (eq? r miss) + (raise AttributeError "object/class ~a is missing attribute ~a" a b) + r))) + +(define (setattr a k v) + (pf-set a (if (string? k) (string->symbol k) k) v)) + +(define (hasattr a b) + (let ((r (ref a (if (string? b) (string->symbol b) b) miss))) + (not (eq? r miss)))) + +(define-method (issubclass x y) #f) +(define-method (issubclass (sub

) (cls

)) + (aif it (ref cls '__subclasscheck__) + (it cls sub) + (if (eq? sub cls) + #t + (if (memq cls (ref sub '__mro__)) + #t + #f)))) + +(define-method (isinstance x y) + (if (null? y) + #f + (if (pair? y) + (or (isinstance x (car y)) + (isinstance x (cdr y))) + (is-a? x y)))) + +(define-method (isinstance (i ) y) + (if (issubclass y int) + #t + (if (pair? y) + (or (isinstance i (car y)) + (isinstance i (cdr y))) + (is-a? i y)))) + +(define-method (isinstance (i ) y) + (if (issubclass y float) + #t + (if (pair? y) + (or (isinstance i (car y)) + (isinstance i (cdr y))) + (is-a? i y)))) + +(define-method (isinstance (i ) y) + (if (issubclass y tuple) + #t + (if (pair? y) + (or (isinstance i (car y)) + (isinstance i (cdr y))) + (is-a? i y)))) + +(define-method (isinstance (i ) y) + (if (issubclass y str) + #t + (if (pair? y) + (or (isinstance i (car y)) + (isinstance i (cdr y))) + (is-a? i y)))) + +(define-method (isinstance (i ) y) + (if (issubclass y bytes) + #t + (if (pair? y) + (or (isinstance i (car y)) + (isinstance i (cdr y))) + (is-a? i y)))) + + +(define-method (isinstance o (cl

)) + (cond + ((eq? cl py-list) + (is-a? o )) + (else #f))) + +(define-method (isinstance (o

) (cl

)) + (cond + ((ref cl '__instancecheck__) => + (lambda (it) + (it o))) + ((pair? cl) + (or + (isinstance o (car cl)) + (isinstance o (cdr cl)))) + (else + (is-a? o (ref cl '__goops__))))) + + + +(define iter + (case-lambda + ((o) (aif it (wrap-in o) + it + (aif get (ref o '__getitem__) + (make-generator iter + (lambda (yield) + (for () ((i 0)) + (yield (get i)) + (+ i 1)))) + (raise TypeError "not iterable" o)))) + ((f sent) + (make-generator iter + (lambda (yield) + (for () () + (let ((r (f))) + (if (equal? r sent) + (break) + (yield r))))))))) + + + +(define-syntax map + (lambda (x) + (syntax-case x () + ((map f a ...) + (with-syntax (((x ...) (generate-temporaries #'(a ...)))) + #'(for ((x : a) ...) ((l '())) + (cons (f x ...) l) + #:final (py-list (reverse l)))))))) + +(define* (sum i #:optional (start 0)) + (for ((x : i)) ((s start)) + (+ s x) + #:final + s)) + + +(define (id x) (object-address x)) + +(define (input str) + ((@ (guile) format) #t str) + (readline)) + +(define (idx x) x) + +(def (py-min (* l) (= key idx) (= default miss)) + (let lp ((l l)) + (match l + ((it) + (for ((x : it)) ((s miss) (b miss)) + (if (eq? s miss) + (values (key x) x) + (let ((k (key x))) + (if (< k s) + (values k x) + (values s b)))) + #:final + (if (eq? b miss) + (if (eq? default miss) + (raise ValueError + "min does not work for zero length list") + default) + b))) + (_ (lp ((@ (guile) list) l)))))) + +(def (py-max (* l) (= key idx) (= default miss)) + (let lp ((l l)) + (match l + ((it) + (for ((x : it)) ((s miss) (b miss)) + (if (eq? s miss) + (values (key x) x) + (let ((k (key x))) + (if (> k s) + (values k x) + (values s b)))) + #:final + (if (eq? b miss) + (if (eq? default miss) + (raise ValueError + "min does not work for zero length list") + default) + b))) + (_ (lp ((@ (guile) list) l)))))) + +(define (oct x) (+ "0o" (number->string (py-index x) 8))) +(define (ord x) (char->integer (string-ref (pylist-ref x 0) 0))) + +(define pow + (case-lambda + ((x y) + (expt x y)) + ((x y z) + (py-mod (expt x y) z)))) + +(define-syntax-rule (super . l) (py-super-mac . l)) + +(define min py-min) +(define max py-max) +(define list pylist) +(define reversed py-reversed) +(define (key-id x) x) +(define* (sorted it #:key (key key-id) (reverse #f)) + (define l (to-pylist '())) + (for ((x : it)) () (pylist-append! l x)) + (pylist-sort! l #:key key #:reverse reverse) + l) + +(define (zip . l) + (let ((l ((@ (guile) map) wrap-in l))) + ((make-generator () + (lambda (yield) + (let lp () + (let lp2 ((l l) (r '())) + (if (pair? l) + (call-with-values (lambda () (next (car l))) + (lambda z + (lp2 (cdr l) (append (reverse z) r)))) + (begin + (yield (reverse r)) + (lp)))))))))) + +(define-python-class ClassMethod ()) +(define-python-class StaticMethod ()) +(define-python-class Funcobj ()) + + diff --git a/modules/language/python/module/python.scm b/modules/language/python/module/python.scm index 3601c2f..3ae04e7 100644 --- a/modules/language/python/module/python.scm +++ b/modules/language/python/module/python.scm @@ -1,338 +1,21 @@ -(define-module (language python module python) - #:use-module (oop goops) - #:use-module (ice-9 match) - #:use-module (ice-9 readline) - #:use-module ((oop pf-objects) #:select - (

class-method static-method ref (set . pf-set) - py-super-mac type object pylist-ref define-python-class - object-method py-dict)) - #:use-module (language python exceptions ) - #:use-module ((language python module string ) #:select ()) - #:use-module ((language python module io ) #:select (open)) - #:use-module (language python def ) - #:use-module (language python for ) - #:use-module (language python try ) - #:use-module (language python yield ) - #:use-module (language python list ) - #:use-module (language python dict ) - #:use-module (language python set ) - #:use-module (language python compile ) - #:use-module (language python string ) - #:use-module (language python bytes ) - #:use-module (language python set ) - #:use-module (language python number ) - #:use-module (language python dir ) - #:use-module (language python hash ) - #:use-module (language python property ) - #:use-module (language python range ) - #:use-module (language python tuple ) - #:use-module (language python eval ) - #:use-module (language python bool ) - - #:replace (list abs min max hash round format map) - - #:re-export (StopIteration GeneratorExit RuntimeError - Exception ValueError TypeError - IndexError KeyError AttributeError - send sendException next - GeneratorExit sendClose RuntimeError - SyntaxError bool - len dir next dict None property range - tuple bytes bytearray eval locals globals - compile exec type object open - ) - - #:export (print repr complex float int str - set all any bin callable reversed - chr classmethod staticmethod objectmethod - divmod enumerate filter - getattr hasattr setattr hex isinstance issubclass - iter sum id input oct ord pow super - sorted zip vars - ClassMethod StaticMethod Funcobj)) - -(define-syntax-rule (aif it p x y) (let ((it p)) (if it x y))) - -(define vars py-dict) - -(define print - (case-lambda - (() ((@ (guile) format) #t "~%")) - ((x) ((@ (guile) format) #t "~s~%" x)) - (l ((@ (guile) format) #t "~s~%" l)))) - -(define (repr x) ((@ (guile) format) #f "~a" x)) -(define abs py-abs) -(define str pystring) -(define complex py-complex) -(define float py-float) -(define int py-int) -(define round py-round) -(define set py-set) -(define all py-all) -(define any py-any) -(define bin py-bin) -(define divmod py-divmod) -(define format py-format) -(define hash py-hash) -(define hex py-hex) - -(define-method (callable x ) #f) -(define-method (callable (x )) #t) -(define-method (callable (x )) #t) -(define-method (callable (x )) #t) -(define-method (callable (x )) #t) -(define-method (callable (x

)) - (ref x '__call__)) - -(define chr integer->char) - -(define objectmethod object-method) -(define classmethod class-method) -(define staticmethod static-method) - -(define (enumerate l) - ((make-generator () - (lambda (yield) - (for ((x : l)) ((i 0)) - (yield i x) - (+ i 1)))))) - -(define (filter f l) - ((make-generator () - (lambda (yield) - (for ((x : l)) () - (if (f x) - (yield x))))))) - -(define miss ((@ (guile) list) 'miss)) - -(define* (getattr a b #:optional (k miss)) - (let ((r (ref a (if (string? b) (string->symbol b) b) k))) - (if (eq? r miss) - (raise AttributeError "object/class ~a is missing attribute ~a" a b) - r))) - -(define (setattr a k v) - (pf-set a (if (string? k) (string->symbol k) k) v)) - -(define (hasattr a b) - (let ((r (ref a (if (string? b) (string->symbol b) b) miss))) - (not (eq? r miss)))) - -(define-method (issubclass x y) #f) -(define-method (issubclass (sub

) (cls

)) - (aif it (ref cls '__subclasscheck__) - (it cls sub) - (if (eq? sub cls) - #t - (if (memq cls (ref sub '__mro__)) - #t - #f)))) - -(define-method (isinstance x y) - (if (null? y) - #f - (if (pair? y) - (or (isinstance x (car y)) - (isinstance x (cdr y))) - (is-a? x y)))) - -(define-method (isinstance (i ) y) - (if (issubclass y int) - #t - (if (pair? y) - (or (isinstance i (car y)) - (isinstance i (cdr y))) - (is-a? i y)))) - -(define-method (isinstance (i ) y) - (if (issubclass y float) - #t - (if (pair? y) - (or (isinstance i (car y)) - (isinstance i (cdr y))) - (is-a? i y)))) - -(define-method (isinstance (i ) y) - (if (issubclass y tuple) - #t - (if (pair? y) - (or (isinstance i (car y)) - (isinstance i (cdr y))) - (is-a? i y)))) - -(define-method (isinstance (i ) y) - (if (issubclass y str) - #t - (if (pair? y) - (or (isinstance i (car y)) - (isinstance i (cdr y))) - (is-a? i y)))) - -(define-method (isinstance (i ) y) - (if (issubclass y bytes) - #t - (if (pair? y) - (or (isinstance i (car y)) - (isinstance i (cdr y))) - (is-a? i y)))) - - -(define-method (isinstance o (cl

)) - (cond - ((eq? cl py-list) - (is-a? o )) - (else #f))) - -(define-method (isinstance (o

) (cl

)) - (cond - ((ref cl '__instancecheck__) => - (lambda (it) - (it o))) - ((pair? cl) - (or - (isinstance o (car cl)) - (isinstance o (cdr cl)))) - (else - (is-a? o (ref cl '__goops__))))) - - - -(define iter - (case-lambda - ((o) (aif it (wrap-in o) - it - (aif get (ref o '__getitem__) - (make-generator iter - (lambda (yield) - (for () ((i 0)) - (yield (get i)) - (+ i 1)))) - (raise TypeError "not iterable" o)))) - ((f sent) - (make-generator iter - (lambda (yield) - (for () () - (let ((r (f))) - (if (equal? r sent) - (break) - (yield r))))))))) - - - -(define-syntax map - (lambda (x) - (syntax-case x () - ((map f a ...) - (with-syntax (((x ...) (generate-temporaries #'(a ...)))) - #'(for ((x : a) ...) ((l '())) - (cons (f x ...) l) - #:final (py-list (reverse l)))))))) - -(define* (sum i #:optional (start 0)) - (for ((x : i)) ((s start)) - (+ s x) - #:final - s)) - - -(define (id x) (object-address x)) - -(define (input str) - ((@ (guile) format) #t str) - (readline)) - -(define (idx x) x) - -(def (py-min (* l) (= key idx) (= default miss)) - (let lp ((l l)) - (match l - ((it) - (for ((x : it)) ((s miss) (b miss)) - (if (eq? s miss) - (values (key x) x) - (let ((k (key x))) - (if (< k s) - (values k x) - (values s b)))) - #:final - (if (eq? b miss) - (if (eq? default miss) - (raise ValueError - "min does not work for zero length list") - default) - b))) - (_ (lp ((@ (guile) list) l)))))) - -(def (py-max (* l) (= key idx) (= default miss)) - (let lp ((l l)) - (match l - ((it) - (for ((x : it)) ((s miss) (b miss)) - (if (eq? s miss) - (values (key x) x) - (let ((k (key x))) - (if (> k s) - (values k x) - (values s b)))) - #:final - (if (eq? b miss) - (if (eq? default miss) - (raise ValueError - "min does not work for zero length list") - default) - b))) - (_ (lp ((@ (guile) list) l)))))) - -(define (oct x) (+ "0o" (number->string (py-index x) 8))) -(define (ord x) (char->integer (string-ref (pylist-ref x 0) 0))) - -(define pow - (case-lambda - ((x y) - (expt x y)) - ((x y z) - (py-mod (expt x y) z)))) - -(define-syntax-rule (super . l) (py-super-mac . l)) - -(define min py-min) -(define max py-max) -(define list pylist) -(define reversed py-reversed) -(define (key-id x) x) -(define* (sorted it #:key (key key-id) (reverse #f)) - (define l (to-pylist '())) - (for ((x : it)) () (pylist-append! l x)) - (pylist-sort! l #:key key #:reverse reverse) - l) - -(define (zip . l) - (let ((l ((@ (guile) map) wrap-in l))) - ((make-generator () - (lambda (yield) - (let lp () - (let lp2 ((l l) (r '())) - (if (pair? l) - (call-with-values (lambda () (next (car l))) - (lambda z - (lp2 (cdr l) (append (reverse z) r)))) - (begin - (yield (reverse r)) - (lp)))))))))) - -(define-python-class ClassMethod ()) -(define-python-class StaticMethod ()) -(define-python-class Funcobj ()) - -(define-method (py-mod (s ) l) - (let* ((s (py-replace s "%s" "~a")) - (s (py-replace s "%r" "~a")) - (l (for ((x : l)) ((r '())) - (cons x r) - #:final (reverse r)))) - (apply (@ (guile) format) #f s l))) - - - +(define-module (language python module python ) + #:use-module (language python module _python) + #:use-module (language python compile ) + #:use-module ((language python format2) #:select ())) + +(define-syntax re-export-all + (syntax-rules () + [(_ iface) + (module-for-each + (lambda (name . l) + (module-re-export! (current-module) ((@ (guile) list) name))) + (resolve-interface 'iface))] + [(_ iface _ li) + (let ((l 'li)) + (module-for-each + (lambda (name . l) + (if (not (member name l)) + (module-re-export! (current-module) ((@ (guile) list) name)))) + (resolve-interface 'iface)))])) + +(re-export-all (language python module _python)) diff --git a/modules/language/python/module/re.scm b/modules/language/python/module/re.scm index 5ba3114..1e9f316 100644 --- a/modules/language/python/module/re.scm +++ b/modules/language/python/module/re.scm @@ -5,7 +5,7 @@ #:use-module (language python dict) #:use-module (language python try) #:use-module (language python exceptions) - #:use-module ((language python module python) #:select (str isinstance range)) + #:use-module ((language python module _python) #:select (str isinstance range)) #:use-module (language python string) #:use-module (language python for) #:use-module (language python def) @@ -18,7 +18,7 @@ #:use-module ((ice-9 match) #:select ((match . ice-match))) #:re-export (A ASCII DEBUG I IGNORECASE L LOCALE M MULTILINE X VERBOSE S DOTALL) - #:export (compile match fullmatch search split finditer findall sub subn + #:export (compile match fullmatch search split splitm splitmm finditer findall sub subn purge escape)) (define start (make-fluid 0)) @@ -58,10 +58,19 @@ (lam (self s (= flags 0)) (set self 'flags flags) (set self 'pattern s) - (let ((l (compile-reg s))) - (set self '__re (list-ref l 0)) - (set self 'groups (- (list-ref l 1) 1)) - (set self 'groupindex (list-ref l 2))))) + (let lp ((l s)) + (if (string? l) + (lp (compile-reg l)) + (if (list? l) + (begin + (set self '__re (list-ref l 0)) + (set self 'groups (- (list-ref l 1) 1)) + (set self 'groupindex (list-ref l 2))) + (begin + (set self '__re l) + (set self 'groups 0) + (set self 'groupindex '()))))))) + (define __repr__ (lambda (self) @@ -149,17 +158,25 @@ (define (grps m) (reverse ((ref m 'groups)))) -(define-syntax-rule (mk split- grps) +(define (mku re ss) + (lambda (m) + (ReMatch (caddr m) re (car m) (cadr m) ss))) + +(define (mkid re ss) id) + +(define-syntax-rule (mk split- grps mku) (def (split- re ss (= maxsplit 0) (= flags 0)) - (if (isinstance re str) + (if (not (isinstance re Regexp)) (split- (Regexp re) ss maxsplit flags) (begin - (set-flags flags) + (set-flags flags) (set-maxsplit maxsplit) (let ((m (parse ss (ff* (f-seq! e-maxsplit (e-search (ref re '__re)) (f-ftr (lambda (c) (list (gs) (ge) c)))))))) - (let lp ((s 0) (l (map (lambda (m) (ReMatch (caddr m) re (car m) (cadr m) ss)) m)) (r '())) + (let lp ((s 0) + (l (map (mku re ss) m)) + (r '())) (if (pair? l) (let* ((m (car l)) (i ((ref m 'start))) @@ -170,13 +187,17 @@ r))) (reverse (cons (pylist-slice ss s None None) r))))))))) -(mk split- grps) +(mk split- grps mku) (define split split-) (define (id x) (list x)) -(mk splitm- id) +(mk splitm- id mku) (define splitm splitm-) +(define (id2 x) (list (ref x '__m))) +(mk splitmm- id2 mku) +(define splitmm splitmm-) + (def (finditer- re s (= flags 0)) (if (isinstance re str) (finditer- (Regexp re) s flags) @@ -310,24 +331,25 @@ (set self 'string ss) (let ((t (make-hash-table))) - (for ((k v : (ref re 'groupindex))) () (hash-set! t k None)) (for ((i : (range (ref re 'groups)))) () (hash-set! t i None)) - - (let lp ((l (list-ref m 0))) - (ice-match l - ((((n . i) . v) . l) - (hash-set! t n v) - (hash-set! t i v) - (lp l)) - (((i . v) . l) - (hash-set! t i v) - (lp l)) - (() #t))) + (if (string? (ref re 'pattern)) + (let lp ((l (list-ref m 0))) + (ice-match l + ((((n . i) . v) . l) + (hash-set! t n v) + (hash-set! t i v) + (lp l)) + (((i . v) . l) + (hash-set! t i v) + (lp l)) + (() #t)))) + + (set self '__m m) (set self '__t t) (set self 'regs (__regs self))))) -- cgit v1.2.3