diff options
-rw-r--r-- | srfi/ChangeLog | 9 | ||||
-rw-r--r-- | srfi/srfi-17.scm | 135 |
2 files changed, 111 insertions, 33 deletions
diff --git a/srfi/ChangeLog b/srfi/ChangeLog index a54be2fa9..538362156 100644 --- a/srfi/ChangeLog +++ b/srfi/ChangeLog @@ -1,3 +1,12 @@ +2004-04-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> + + * srfi-17.scm (setter, car, cdr etc.): When within one define + expression a new variable in the local module is defined in terms + of an equally named variable from some other module, use @ to + refer to the variable in the other module. This is necessary due + to section 5.2.1 of R5RS: In a define expression first the new + binding is created and then the expression is evaluated. + 2004-04-24 Kevin Ryde <user42@zip.com.au> * srfi-11.scm (let-values): Use make-symbol rather than gensym, for diff --git a/srfi/srfi-17.scm b/srfi/srfi-17.scm index 61456a624..6c4afe241 100644 --- a/srfi/srfi-17.scm +++ b/srfi/srfi-17.scm @@ -59,7 +59,7 @@ (define setter (getter-with-setter - setter + (@ (guile) setter) (lambda args (error "Setting setters is not supported for a good reason.")))) @@ -69,37 +69,106 @@ (lambda (obj value) (setter (location obj) value))) -(define car (getter-with-setter car set-car!)) -(define cdr (getter-with-setter cdr set-cdr!)) -(define caar (getter-with-setter caar (compose-setter set-car! car))) -(define cadr (getter-with-setter cadr (compose-setter set-car! cdr))) -(define cdar (getter-with-setter cdar (compose-setter set-cdr! car))) -(define cddr (getter-with-setter cddr (compose-setter set-cdr! cdr))) -(define caaar (getter-with-setter caaar (compose-setter set-car! caar))) -(define caadr (getter-with-setter caadr (compose-setter set-car! cadr))) -(define cadar (getter-with-setter cadar (compose-setter set-car! cdar))) -(define caddr (getter-with-setter caddr (compose-setter set-car! cddr))) -(define cdaar (getter-with-setter cdaar (compose-setter set-cdr! caar))) -(define cdadr (getter-with-setter cdadr (compose-setter set-cdr! cadr))) -(define cddar (getter-with-setter cddar (compose-setter set-cdr! cdar))) -(define cdddr (getter-with-setter cdddr (compose-setter set-cdr! cddr))) -(define caaaar (getter-with-setter caaaar (compose-setter set-car! caaar))) -(define caaadr (getter-with-setter caaadr (compose-setter set-car! caadr))) -(define caadar (getter-with-setter caadar (compose-setter set-car! cadar))) -(define caaddr (getter-with-setter caaddr (compose-setter set-car! caddr))) -(define cadaar (getter-with-setter cadaar (compose-setter set-car! cdaar))) -(define cadadr (getter-with-setter cadadr (compose-setter set-car! cdadr))) -(define caddar (getter-with-setter caddar (compose-setter set-car! cddar))) -(define cadddr (getter-with-setter cadddr (compose-setter set-car! cdddr))) -(define cdaaar (getter-with-setter cdaaar (compose-setter set-cdr! caaar))) -(define cdaadr (getter-with-setter cdaadr (compose-setter set-cdr! caadr))) -(define cdadar (getter-with-setter cdadar (compose-setter set-cdr! cadar))) -(define cdaddr (getter-with-setter cdaddr (compose-setter set-cdr! caddr))) -(define cddaar (getter-with-setter cddaar (compose-setter set-cdr! cdaar))) -(define cddadr (getter-with-setter cddadr (compose-setter set-cdr! cdadr))) -(define cdddar (getter-with-setter cdddar (compose-setter set-cdr! cddar))) -(define cddddr (getter-with-setter cddddr (compose-setter set-cdr! cdddr))) -(define string-ref (getter-with-setter string-ref string-set!)) -(define vector-ref (getter-with-setter vector-ref vector-set!)) +(define car + (getter-with-setter (@ (guile) car) + set-car!)) +(define cdr + (getter-with-setter (@ (guile) cdr) + set-cdr!)) + +(define caar + (getter-with-setter (@ (guile) caar) + (compose-setter set-car! (@ (guile) car)))) +(define cadr + (getter-with-setter (@ (guile) cadr) + (compose-setter set-car! (@ (guile) cdr)))) +(define cdar + (getter-with-setter (@ (guile) cdar) + (compose-setter set-cdr! (@ (guile) car)))) +(define cddr + (getter-with-setter (@ (guile) cddr) + (compose-setter set-cdr! (@ (guile) cdr)))) + +(define caaar + (getter-with-setter (@ (guile) caaar) + (compose-setter set-car! (@ (guile) caar)))) +(define caadr + (getter-with-setter (@ (guile) caadr) + (compose-setter set-car! (@ (guile) cadr)))) +(define cadar + (getter-with-setter (@ (guile) cadar) + (compose-setter set-car! (@ (guile) cdar)))) +(define caddr + (getter-with-setter (@ (guile) caddr) + (compose-setter set-car! (@ (guile) cddr)))) +(define cdaar + (getter-with-setter (@ (guile) cdaar) + (compose-setter set-cdr! (@ (guile) caar)))) +(define cdadr + (getter-with-setter (@ (guile) cdadr) + (compose-setter set-cdr! (@ (guile) cadr)))) +(define cddar + (getter-with-setter (@ (guile) cddar) + (compose-setter set-cdr! (@ (guile) cdar)))) +(define cdddr + (getter-with-setter (@ (guile) cdddr) + (compose-setter set-cdr! (@ (guile) cddr)))) + +(define caaaar + (getter-with-setter (@ (guile) caaaar) + (compose-setter set-car! (@ (guile) caaar)))) +(define caaadr + (getter-with-setter (@ (guile) caaadr) + (compose-setter set-car! (@ (guile) caadr)))) +(define caadar + (getter-with-setter (@ (guile) caadar) + (compose-setter set-car! (@ (guile) cadar)))) +(define caaddr + (getter-with-setter (@ (guile) caaddr) + (compose-setter set-car! (@ (guile) caddr)))) +(define cadaar + (getter-with-setter (@ (guile) cadaar) + (compose-setter set-car! (@ (guile) cdaar)))) +(define cadadr + (getter-with-setter (@ (guile) cadadr) + (compose-setter set-car! (@ (guile) cdadr)))) +(define caddar + (getter-with-setter (@ (guile) caddar) + (compose-setter set-car! (@ (guile) cddar)))) +(define cadddr + (getter-with-setter (@ (guile) cadddr) + (compose-setter set-car! (@ (guile) cdddr)))) +(define cdaaar + (getter-with-setter (@ (guile) cdaaar) + (compose-setter set-cdr! (@ (guile) caaar)))) +(define cdaadr + (getter-with-setter (@ (guile) cdaadr) + (compose-setter set-cdr! (@ (guile) caadr)))) +(define cdadar + (getter-with-setter (@ (guile) cdadar) + (compose-setter set-cdr! (@ (guile) cadar)))) +(define cdaddr + (getter-with-setter (@ (guile) cdaddr) + (compose-setter set-cdr! (@ (guile) caddr)))) +(define cddaar + (getter-with-setter (@ (guile) cddaar) + (compose-setter set-cdr! (@ (guile) cdaar)))) +(define cddadr + (getter-with-setter (@ (guile) cddadr) + (compose-setter set-cdr! (@ (guile) cdadr)))) +(define cdddar + (getter-with-setter (@ (guile) cdddar) + (compose-setter set-cdr! (@ (guile) cddar)))) +(define cddddr + (getter-with-setter (@ (guile) cddddr) + (compose-setter set-cdr! (@ (guile) cdddr)))) + +(define string-ref + (getter-with-setter (@ (guile) string-ref) + string-set!)) + +(define vector-ref + (getter-with-setter (@ (guile) vector-ref) + vector-set!)) ;;; srfi-17.scm ends here |