mes: srfi-9: Guile interface compatibility.

* mes/module/srfi/srfi-9-struct.mes (record-accessor): Rename from
record-getter.  Update users.
* mes/module/srfi/srfi-9-vector.mes (record-modifier): Rename from
record-setter.  Update users.
* mes/module/srfi/srfi-9/gnu-struct.mes: Update.
This commit is contained in:
Jan Nieuwenhuizen 2019-11-10 11:03:58 +01:00 committed by Jan (janneke) Nieuwenhuizen
parent 698598850e
commit 5073bc73c2
No known key found for this signature in database
GPG Key ID: F3C1A0D9C1D65273
3 changed files with 14 additions and 14 deletions

View File

@ -75,7 +75,7 @@
(display " ")
(display field)
(display ": ")
(display ((record-getter vtable field) o)))
(display ((record-accessor vtable field) o)))
fields))
(display ">"))
@ -87,21 +87,21 @@
(define-macro (define-record-accessor type field)
`(begin
(define ,(cadr field) ,(record-getter type (car field)))
(define ,(cadr field) ,(record-accessor type (car field)))
(if ,(pair? (cddr field))
(define ,(if (pair? (cddr field)) (caddr field)) ,(record-setter type (car field))))))
(define ,(if (pair? (cddr field)) (caddr field)) ,(record-modifier type (car field))))))
(define (record-getter type field)
(define (record-accessor type field)
(let ((i (record-field-index type field)))
(lambda (o . field?)
(if (not (eq? (record-type o) (record-type type))) (error "record getter: record expected" type o)
(if (not (eq? (record-type o) (record-type type))) (error "record accessor: record expected" type o)
(if (pair? field?) field
(struct-ref o i))))))
(define (record-setter type field)
(define (record-modifier type field)
(let ((i (record-field-index type field)))
(lambda (o v)
(if (not (eq? (record-type o) (record-type type))) (error "record setter: record expected" type o)
(if (not (eq? (record-type o) (record-type type))) (error "record modifier: record expected" type o)
(struct-set! o i v)))))
(define (record-field-index type field)

View File

@ -72,21 +72,21 @@
(define-macro (define-record-accessor type field)
`(begin
(define ,(cadr field) ,(record-getter type (car field)))
(define ,(cadr field) ,(record-accessor type (car field)))
(if ,(pair? (cddr field))
(define ,(if (pair? (cddr field)) (caddr field)) ,(record-setter type (car field))))))
(define ,(if (pair? (cddr field)) (caddr field)) ,(record-modifier type (car field))))))
(define (record-getter type field)
(define (record-accessor type field)
(let ((i (record-field-index type field)))
(lambda (o . field?)
(if (not (eq? (record-type o) type)) (error "record getter: record expected" type o)
(if (not (eq? (record-type o) type)) (error "record accessor: record expected" type o)
(if (pair? field?) field
(vector-ref o i))))))
(define (record-setter type field)
(define (record-modifier type field)
(let ((i (record-field-index type field)))
(lambda (o v)
(if (not (eq? (record-type o) type)) (error "record setter: record expected" type o)
(if (not (eq? (record-type o) type)) (error "record modifier: record expected" type o)
(vector-set! o i v)))))
(define (record-field-index type field)

View File

@ -32,7 +32,7 @@
(set (getter ,o #t)))
(define (field->value field)
(if (eq? set field) ,value
((record-getter type field) ,o)))
((record-accessor type field) ,o)))
(let* ((fields (record-field-names type))
(values (map field->value fields)))
(apply (record-constructor type fields) values)))))