您的代码不符合R6RS 标准参考文档,可能的定义是:
#!r6rs
(import (rnrs) (rnrs records syntactic))
(define-record-type node (fields v l r))
(define tree-value (record-accessor node 0))
(define tree-left (record-accessor node 1))
(define tree-right (record-accessor node 2))
或者
#!r6rs
(import (rnrs) (rnrs records syntactic))
(define-record-type node
(fields
(immutable v tree-value)
(immutable l tree-left)
(immutable r tree-right)))
或者
#!r6rs
(import (rnrs) (rnrs records syntactic))
(define-record-type (node make-node node?)
(fields
(immutable v tree-value)
(immutable l tree-left)
(immutable r tree-right)))
对于其中任何一个,您将获得:
(define n (make-node 1 2 3))
(display n) (newline)
=> #(struct:node 1 2 3)
(display (node? n)) (newline)
=> #t
(display (tree-value n)) (newline)
=> 1
(display (tree-left n)) (newline)
=> 2
(display (tree-right n)) (newline)
=> 3