;;;; box-core.literals.scm -*- Scheme -*- ;;;; Kon Lovett, Oct '24 (module (box-core literals) () (import scheme) (import (chicken base)) (import (chicken type)) (import (only (chicken read-syntax) set-sharp-read-syntax!)) (import (only box-core box box! box-ref)) ;NOTE works w/o recourse to `define-record' for tag, so ok for tag "defining" module (cond-expand ((or chicken-5.0 chicken-5.1) (define (set-record-printer! tag proc) (##sys#register-record-printer tag proc) ) ) (else) ) (include-relative "box.types") ;;; (define (box-print bx port) (let ((val (box-ref bx) #; (cond ((%box-structure? bx) (%box-structure-ref bx)) ((%box-closure? bx) (%box-closure-ref bx)) (else (error-box 'box-print bx)) ) ) ) (display "#&" port) (write val port) ) ) (define (box-read port) `(make-box-mutable ,(read port)) ) ;;; (set-sharp-read-syntax! #\& box-read) (set-record-printer! box box-print) (set-record-printer! box! box-print) ) ;module (box-core literals)