main
Matthew Butterick 7 years ago
parent f60f5a1b9e
commit 6aee273209

@ -1,20 +1,22 @@
#lang br #lang br
(define the-ks (make-hash)) (define pointer-ks (make-hash))
(define xs (make-hash)) (define results (make-hash))
(define is '(a b (c . h) d e f g h i j)) (define vals '(a b (h) d e f g h i j))
(for ([(v i) (in-indexed is)]
#:unless (hash-has-key? xs i)) (for ([(val i) (in-indexed vals)])
(report* xs i) (hash-ref! results i (λ ()
(hash-set! xs i (report* results i)
(let/cc k (let/cc pointer-k
(let ([v (cond (let ([v (cond
[(pair? v) (hash-set! the-ks (cdr v) k) (car v)] [(pair? val) (hash-set! pointer-ks (car val) pointer-k) (car val)]
[else v])]) [else val])])
(define tk (hash-ref the-ks v #f)) (define pointer (hash-ref pointer-ks v #f))
(cond (cond
[tk [pointer (hash-remove! pointer-ks v)
(hash-remove! the-ks v) (pointer (format "~a xref" v))]
(tk (format "~a xref" v))] [else v]))))))
[else (format "just ~a" v)])))))
(for/list ([i (in-range (length (hash-keys results)))])
(hash-ref results i))
Loading…
Cancel
Save