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:
parent
698598850e
commit
5073bc73c2
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)))))
|
||||
|
|
Loading…
Reference in New Issue