#!r6rs ;;;; SPDX-FileCopyrightText: 2009 David Van Horn ;;;; ;;;; SPDX-License-Identifier: MIT ;; This code is derived from code written by William D Clinger. ;; http://lists.ccs.neu.edu/pipermail/larceny-users/2009-September/000735.html (library (srfi :101 random-access-lists syntax fetch) (export new-label-for fetch-labelled) (import (rnrs base) (rnrs hashtables) (srfi :101 random-access-lists syntax ra-datum)) (define label-counter 0) ; largest label in use (define label-table ; maps labels to things (make-hashtable (lambda (x) x) =)) (define (new-label-for y) (set! label-counter (+ 1 label-counter)) (hashtable-set! label-table label-counter (datum->ra-datum y)) label-counter) (define (fetch-labelled label) (hashtable-ref label-table label 'this-never-matters)) ) ; (srfi :101 random-access-lists syntax fetch)