commit 55dcfebb456e5817a9809e82d31ef330c62026ed
parent be91cf2800f2cd71d5eb71b90774a5dbab506193
Author: Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
Date: Fri, 14 Aug 2015 10:09:22 +0200
Integrate with SRFI-17.
Diffstat:
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/generic-ref-set.scm b/generic-ref-set.scm
@@ -16,12 +16,12 @@
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
(import
- (rename (scheme base)
- (set! _set!)
+ (rename (except (scheme base) set!)
(define-record-type _define-record-type))
(scheme case-lambda)
(r6rs hashtables)
- (srfi 1))
+ (srfi 1)
+ (rename (srfi 17) (set! _set!)))
;;; Helpers
@@ -55,13 +55,15 @@
(define-syntax set!
(syntax-rules ()
- ((set! <var> <val>)
- (_set! <var> <val>))
+ ((set! <place> <expression>)
+ (_set! <place> <expression>))
((set! <object> <field> <value>)
(let* ((object <object>)
(setter (lookup-setter object)))
(setter object <field> <value>)))))
+(set! (setter ref) (lambda (object field value) (set! object field value)))
+
(define (lookup-getter object)
(let ((entry (assv (type-of object) getter-table)))
(if entry