~ chicken-core (chicken-5) 957a745b7dbf5ecef26471cf539794c36dc8f997
commit 957a745b7dbf5ecef26471cf539794c36dc8f997 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Sun Jan 25 21:53:08 2015 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Sun Jan 25 21:53:08 2015 +0100 core.scm: mini-srfi-1 diff --git a/core.scm b/core.scm index 56310cca..c5fd0040 100644 --- a/core.scm +++ b/core.scm @@ -580,7 +580,7 @@ ((symbol? (car x)) (let ((ln (or (get-line x) outer-ln))) (emit-syntax-trace-info x #f) - (unless (proper-list? x) + (unless (list? x) (if ln (##sys#syntax-error/context (sprintf "(~a) - malformed expression" ln) x) (##sys#syntax-error/context "malformed expression" x))) @@ -656,7 +656,7 @@ (apply ##sys#require ids) (##sys#hash-table-update! file-requirements 'dynamic/syntax - (cut lset-union eq? <> ids) + (cut lset-union <> ids) (lambda () ids) ) '(##core#undefined) ) ) @@ -1249,8 +1249,8 @@ (cons (cons raw-c-name name) callback-names)) (quit-compiling "name `~S' of external definition is not a valid C identifier" raw-c-name) ) - (when (or (not (proper-list? vars)) - (not (proper-list? atypes)) + (when (or (not (list? vars)) + (not (list? atypes)) (not (= (length vars) (length atypes))) ) (syntax-error "non-matching or invalid argument list to foreign callback-wrapper" @@ -1348,7 +1348,7 @@ (cons name (alist-cons x2 ln (if old (cdr old) '()))) ) ) x2) ) ) ] ) ) ) ) - ((not (proper-list? x)) + ((not (list? x)) (##sys#syntax-error/context "malformed expression" x) ) ((constant? (car x)) @@ -1415,7 +1415,7 @@ (when (pair? us) (##sys#hash-table-update! file-requirements 'static - (cut lset-union eq? us <>) + (cut lset-union us <>) (lambda () us)) (let ((units (map (lambda (u) (string->c-identifier (stringify u))) us))) (set! used-units (append used-units units)) ) ) ) ) @@ -1440,8 +1440,8 @@ (set! extended-bindings default-extended-bindings) ] [else (let ([syms (stripa (cdr spec))]) - (set! standard-bindings (lset-intersection eq? syms default-standard-bindings)) - (set! extended-bindings (lset-intersection eq? syms default-extended-bindings)) ) ] ) ) + (set! standard-bindings (lset-intersection syms default-standard-bindings)) + (set! extended-bindings (lset-intersection syms default-extended-bindings)) ) ] ) ) ((number-type) (check-decl spec 1 1) (set! number-type (strip (cadr spec)))) @@ -1491,13 +1491,13 @@ (if (null? (cddr spec)) (set! standard-bindings '()) (set! standard-bindings - (lset-difference eq? default-standard-bindings + (lset-difference default-standard-bindings (stripa (cddr spec))))) ] [(extended-bindings) (if (null? (cddr spec)) (set! extended-bindings '()) (set! extended-bindings - (lset-difference eq? default-extended-bindings + (lset-difference default-extended-bindings (stripa (cddr spec))) )) ] [(inline) (if (null? (cddr spec)) @@ -1511,8 +1511,8 @@ (set! extended-bindings '()) ] [else (let ([syms (stripa (cddr spec))]) - (set! standard-bindings (lset-difference eq? default-standard-bindings syms)) - (set! extended-bindings (lset-difference eq? default-extended-bindings syms)) ) ] ) ] + (set! standard-bindings (lset-difference default-standard-bindings syms)) + (set! extended-bindings (lset-difference default-extended-bindings syms)) ) ] ) ] ((inline-global) (set! enable-inline-files #t) (when (pair? (cddr spec)) @@ -1755,7 +1755,7 @@ (walk (car xs)) (loop (cdr xs)) ) ) ) (define (walk x) - (cond ((not-pair? x)) + (cond ((not (pair? x))) ((symbol? (car x)) (let* ((name (car x)) (old (or (##sys#hash-table-ref ##sys#line-number-database name) '())) ) @@ -2296,12 +2296,12 @@ (define (test sym item) (db-get db sym item)) (define (register-customizable! var id) - (set! customizable (lset-adjoin eq? customizable var)) + (set! customizable (lset-adjoin customizable var)) (db-put! db id 'customizable #t) ) (define (register-direct-call! id) (set! direct-calls (add1 direct-calls)) - (set! direct-call-ids (lset-adjoin eq? direct-call-ids id)) ) + (set! direct-call-ids (lset-adjoin direct-call-ids id)) ) ;; Gather free-variable information: ;; (and: - register direct calls @@ -2325,7 +2325,7 @@ (when (pair? (cdr params)) (bomb "let-node has invalid format" params)) (let ((c (gather (first subs) here locals)) (var (first params))) - (append c (delete var (gather (second subs) here (cons var locals)) eq?)))) + (append c (delete var (gather (second subs) here (cons var locals)))))) ((set!) (let ((var (first params)) @@ -2363,7 +2363,7 @@ (and refs sites (= (length refs) (length sites)) (test varname 'value) - (proper-list? llist) ) ] ) + (list? llist) ) ] ) (when (and name (not (llist-match? llist (cdr subs)))) (quit-compiling @@ -2384,10 +2384,10 @@ (lambda (vars argc rest) (let ((id (if here (first params) 'toplevel))) (fluid-let ((lexicals (append locals lexicals))) - (let ((c (delete-duplicates (gather (first subs) id vars) eq?))) + (let ((c (delete-duplicates (gather (first subs) id vars)))) (db-put! db id 'closure-size (length c)) (db-put! db id 'captured-variables c) - (lset-difference eq? c locals vars))))))) + (lset-difference c locals vars))))))) (else (concatenate (map (lambda (n) (gather n here locals)) subs)) ) ) )) @@ -2469,14 +2469,16 @@ (fourth params) ) (list (let ((body (transform (car subs) cvar capturedvars))) (if (pair? boxedvars) - (fold-right - (lambda (alias val body) - (make-node 'let (list alias) (list val body))) - body - (unzip1 boxedaliases) - (map (lambda (a) - (make-node '##core#box '() (list (varnode (cdr a))))) - boxedaliases) ) + (let loop ((aliases (unzip1 boxedaliases)) + (values + (map (lambda (a) + (make-node '##core#box '() (list (varnode (cdr a))))) + boxedaliases) )) + (if (null? aliases) + body + (make-node 'let (list (car aliases)) + (list (car values) + (loop (cdr aliases) (cdr values)))))) body) ) ) ) (let ((cvars (map (lambda (v) (ref-var (varnode v) here closure)) capturedvars) ) ) @@ -2782,7 +2784,7 @@ ((##core#call) (let ((len (length (cdr subs)))) - (set! signatures (lset-adjoin = signatures len)) + (set! signatures (lset-adjoin signatures len)) (when (and (>= (length params) 3) (eq? here (third params))) (set! looping (add1 looping)) ) (make-node class params (mapwalk subs e e-count here boxes)) ) )Trap