Skip to content

Commit

Permalink
Apply changes from John Cowan.
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurgleckler committed Nov 5, 2015
1 parent 25a8247 commit ed8e8c4
Show file tree
Hide file tree
Showing 3 changed files with 312 additions and 318 deletions.
21 changes: 21 additions & 0 deletions ephemerons-racket.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
(define %make-ephemeron make-ephemeron)

;; ephemeron? is already defined correctly

(define (make-ephemeron key datum)
(%make-ephemeron key (cons key datum)))

(define (ephemeron-broken? ephemeron)
(not (ephemeron-value ephemeron)))

(define (ephemeron-key ephemeron)
(let ((value (ephemeron-value ephemeron)))
(if (eq? value #f)
#f
(car value))))

(define (ephemeron-datum ephemeron)
(let ((value (ephemeron-value ephemeron)))
(if (eq? value #f)
#f
(cdr value))))
10 changes: 10 additions & 0 deletions ephemerons-trivial.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
(define-record <ephemeron>
(%make-ephemeron key datum broken?)
ephemeron?
(key ephemeron-key)
(datum ephemeron-datum)
(broken? ephemeron-broken?))

(define (make-ephemeron key datum) (%make-ephemeron key datum #f))

(define (reference-barrier key) #t)

0 comments on commit ed8e8c4

Please sign in to comment.