On this page:
reference-type?
reference-type
define-reference-type
make-reference-implementation
reference-type-name
reference-type-fields
reference-type-size
reference-type-object-name-field
reference-type-constructor-name
reference-type-predicate-name
reference-type-accessor-name
2.6.1 Reference Type Descriptors
reference-descriptor?
initialized-reference-descriptor?
uninitialized-reference-descriptor?
reference-descriptor-type
reference-descriptor-constructor
reference-descriptor-predicate
reference-descriptor-accessor
2.6.2 Reference Type Properties
default-reference-properties
default-reference-equal+  hash
default-reference-custom-write
default-reference-object-name
7.4

2.6 Reference Types

 (require rebellion/type/reference) package: rebellion

procedure

(reference-type? v)  boolean?

  v : any/c

procedure

(reference-type name 
  fields 
  [#:object-name-field name-field 
  #:constructor-name constructor-name 
  #:predicate-name predicate-name 
  #:accessor-name accessor-name]) 
  reference-type?
  name : interned-symbol?
  fields : keyset?
  name-field : natural? = (keyset-index-of fields '#:name)
  constructor-name : (or/c interned-symbol? #f) = #f
  predicate-name : (or/c interned-symbol? #f) = #f
  accessor-name : (or/c interned-symbol? #f) = #f

syntax

(define-reference-type id (field-id ...) option ...)

 
option = field-option
  | naming-option
  | property-option
     
field-option = 
  | #:object-name-field name-field-id
     
naming-option = #:predicate-name predicate-id
  | #:constructor-name constructor-id
  | #:accessor-name accessor-id
     
property-option = 
  | #:property-maker prop-maker-expr
 
  prop-maker-expr : 
(-> uninitialized-reference-descriptor?
    (listof (cons/c struct-type-property? any/c)))

procedure

(make-reference-implementation type 
  [#:property-maker prop-maker 
  #:inspector inspector]) 
  initialized-reference-descriptor?
  type : reference-type?
  prop-maker : 
(-> uninitialized-reference-descriptor?
    (listof (cons/c struct-type-property? any/c)))
   = default-reference-properties
  inspector : inspector? = (current-inspector)

procedure

(reference-type-name type)  interned-symbol?

  type : reference-type?

procedure

(reference-type-fields type)  keyset?

  type : reference-type?

procedure

(reference-type-size type)  natural?

  type : reference-type?

procedure

(reference-type-object-name-field type)  natural?

  type : reference-type?

procedure

(reference-type-constructor-name type)  interned-symbol?

  type : reference-type?

procedure

(reference-type-predicate-name type)  interned-symbol?

  type : reference-type?

procedure

(reference-type-accessor-name type)  interned-symbol?

  type : reference-type?
2.6.1 Reference Type Descriptors

procedure

(reference-descriptor? v)  boolean?

  v : any/c

procedure

(initialized-reference-descriptor? v)  boolean?

  v : any/c

procedure

(reference-descriptor-type descriptor)  reference-type?

  descriptor : reference-descriptor?

procedure

(reference-descriptor-constructor descriptor)  procedure?

  descriptor : reference-descriptor?

procedure

(reference-descriptor-predicate descriptor)  predicate/c

  descriptor : reference-descriptor?

procedure

(reference-descriptor-accessor descriptor)

  (-> (reference-descriptor-predicate descriptor) natural? any/c)
  descriptor : reference-descriptor?
2.6.2 Reference Type Properties

procedure

(default-reference-properties descriptor)

  (listof (cons/c struct-type-property? any/c))
  descriptor : reference-descriptor?

procedure

(default-reference-equal+hash descriptor)  equal+hash/c

  descriptor : reference-descriptor?

procedure

(default-reference-custom-write descriptor)

  custom-write-function/c
  descriptor : reference-descriptor?

procedure

(default-reference-object-name descriptor)  natural?

  descriptor : reference-descriptor?