mes: srfi-9: Guile interface compliancy.
* mes/module/srfi/srfi-9-struct.mes (record-type-fields): Rename from record-field-names. Update users. * mes/module/srfi/srfi-9-vector.mes (record-type-fields): Likewise. * mes/module/srfi/srfi-9/gnu-struct.mes (set-field): Update.
This commit is contained in:
parent
bd58f2a258
commit
c31a597143
|
@ -43,7 +43,7 @@
|
|||
(define (record-type o)
|
||||
(struct-ref o 2))
|
||||
|
||||
(define (record-field-names o)
|
||||
(define (record-type-fields o)
|
||||
(struct-ref o 3))
|
||||
|
||||
(define (record-predicate type)
|
||||
|
@ -56,7 +56,7 @@
|
|||
(record-type? (struct-vtable o))))
|
||||
|
||||
(define (record-constructor type . field-names)
|
||||
(let* ((fields (record-field-names type))
|
||||
(let* ((fields (record-type-fields type))
|
||||
(name (record-type type))
|
||||
(field-names (if (null? field-names) fields
|
||||
(car field-names))))
|
||||
|
@ -70,7 +70,7 @@
|
|||
(display "#<")
|
||||
(display (record-type o))
|
||||
(let* ((vtable (struct-vtable o))
|
||||
(fields (record-field-names vtable)))
|
||||
(fields (record-type-fields vtable)))
|
||||
(for-each (lambda (field)
|
||||
(display " ")
|
||||
(display field)
|
||||
|
@ -105,7 +105,7 @@
|
|||
(struct-set! o i v)))))
|
||||
|
||||
(define (record-field-index type field)
|
||||
(+ 3 (or (lst-index (record-field-names type) field)
|
||||
(+ 3 (or (lst-index (record-type-fields type) field)
|
||||
(error "no such field" type field))))
|
||||
|
||||
(define (lst-index lst o)
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
(define (record-type o)
|
||||
(vector-ref o 1))
|
||||
|
||||
(define (record-field-names o)
|
||||
(define (record-type-fields o)
|
||||
(vector-ref o 2))
|
||||
|
||||
(define (record-predicate type)
|
||||
|
@ -56,7 +56,7 @@
|
|||
(eq? (record-type o) type))))
|
||||
|
||||
(define (record-constructor type . field-names)
|
||||
(let* ((fields (record-field-names type))
|
||||
(let* ((fields (record-type-fields type))
|
||||
(field-names (if (null? field-names) fields
|
||||
(car field-names))))
|
||||
(lambda (. o)
|
||||
|
@ -90,7 +90,7 @@
|
|||
(vector-set! o i v)))))
|
||||
|
||||
(define (record-field-index type field)
|
||||
(1+ (or (lst-index (record-field-names type) field)
|
||||
(1+ (or (lst-index (record-type-fields type) field)
|
||||
(error "no such field" type field))))
|
||||
|
||||
(define (lst-index lst o)
|
||||
|
|
|
@ -33,6 +33,6 @@
|
|||
(define (field->value field)
|
||||
(if (eq? set field) ,value
|
||||
((record-accessor type field) ,o)))
|
||||
(let* ((fields (record-field-names type))
|
||||
(let* ((fields (record-type-fields type))
|
||||
(values (map field->value fields)))
|
||||
(apply (record-constructor type fields) values)))))
|
||||
|
|
Loading…
Reference in New Issue