chibi-scheme/lib/chibi/weak.sld
2020-07-24 12:53:29 +09:00

28 lines
943 B
Scheme

;;> Library for weak data structures.
;;> \procedure{(make-ephemeron key value)}
;;> Returns a new ephemeron. This ephemeron holds a weak reference to
;;> \var{key}, such that \var{value} will only be traced by the GC if
;;> \var{key} is referenced from an external object.
;;> \procedure{(ephemeron? x)}
;;> Returns true iff \var{x} is an ephemeron.
;;> \procedure{(ephemeron-broken? ephemeron)}
;;> Returns true iff \var{ephemeron}s \var{key} has been GCed.
;;> \procedure{(ephemeron-key ephemeron)}
;;> Returns \var{ephemeron}s \var{key}, or \scheme{#f} if it has been GCed.
;;> \procedure{(ephemeron-value ephemeron)}
;;> Returns \var{ephemeron}s \var{value}.
(define-library (chibi weak)
(export make-ephemeron ephemeron? ephemeron-broken?
ephemeron-key ephemeron-value
;; make-weak-vector weak-vector? weak-vector-length
;; weak-vector-ref weak-vector-set!
)
(include-shared "weak"))