29 lines
857 B
Scheme
29 lines
857 B
Scheme
#!r6rs
|
|
;; Copyright 2009 Derick Eddington. My MIT-style license is in the file named
|
|
;; LICENSE from the original collection this file is distributed with.
|
|
|
|
(library (srfi :38 with-shared-structure)
|
|
(export
|
|
write-with-shared-structure
|
|
(rename (write-with-shared-structure write/ss))
|
|
read-with-shared-structure
|
|
(rename (read-with-shared-structure read/ss)))
|
|
(import
|
|
(rnrs)
|
|
(only (ikarus) print-graph parameterize))
|
|
|
|
(define write-with-shared-structure
|
|
(case-lambda
|
|
((obj)
|
|
(write-with-shared-structure obj (current-output-port)))
|
|
((obj port)
|
|
(parameterize ((print-graph #T))
|
|
(write obj port)))
|
|
((obj port optarg)
|
|
(assertion-violation 'write-with-shared-structure
|
|
"this implementation does not support optarg"))))
|
|
|
|
(define read-with-shared-structure read)
|
|
|
|
)
|