1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

* 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.
This commit is contained in:
Dirk Herrmann 2004-04-24 08:48:58 +00:00
parent 7301de799a
commit 6aef9d2b81
2 changed files with 111 additions and 33 deletions

View file

@ -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

View file

@ -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