15 lines
493 B
Racket
15 lines
493 B
Racket
#lang racket
|
|
|
|
(define (deepcopy x)
|
|
;; make sure that all sharings are shown
|
|
(parameterize ([print-graph #t]) (read (open-input-string (format "~s" x)))))
|
|
|
|
(define (try x)
|
|
;; use the same setting to see that it worked
|
|
(parameterize ([print-graph #t])
|
|
(printf "original: ~s\n" x)
|
|
(printf "deepcopy: ~s\n" (deepcopy x))
|
|
;; print both also, which shows that they are indeed different
|
|
(printf "both: ~s\n" (list x (deepcopy x)))))
|
|
(try (shared ([x (cons 1 x)]) (list x x)))
|