Chez Scheme позволяет настраивать чтение и запись большинства записей, включая хеш-таблицы.Chez Scheme предоставляет процедуры record-writer
и record-reader
, которые позволяют настраивать функции, используемые для записи и чтения записей:
http://cisco.github.io/ChezScheme/csug9.5/objects.html#./objects:s176
На этой странице есть несколько хороших примеров, ноВажным моментом является то, что вы можете указать #f
в качестве записывающего устройства, по умолчанию для новых типов записей, которые будут использовать формат, который может быть считан программой чтения по умолчанию.Это не будет работать 100% времени, так как есть некоторые типы, которые не имеют сериализуемого представления, например функции.
После того, как я отключил специальный принтер для eq-hashtables и специальный принтер для базовых hashtables, яможет видеть представление по умолчанию:
> (record-writer (record-rtd (make-eq-hashtable)) #f)
> (record-writer
(record-type-parent
(record-type-parent (record-rtd (make-eq-hashtable)))) #f)
> (make-eq-hashtable)
#[#{eq-ht icguu8mlhm1y7ywsairxck-0} eq #t #(0 1 2 3 4 5 6 7) 8 0 0]
> (define ht (make-eq-hashtable))
> (eq-hashtable-set! ht 'a "a")
> ht
#[#{eq-ht icguu8mlhm1y7ywsairxck-0} eq #t #(0 #<tlc> 2 3 4 5 6 7) 8 1 0]
К сожалению, похоже, что есть объект с пользовательским модулем записи в качестве части хеш-таблицы, поэтому вы не можете использовать модуль записи по умолчанию для просмотра записей.