diff --git a/piclib/picrin/array.scm b/piclib/picrin/array.scm index 66aaa5b5..d8a2d45a 100644 --- a/piclib/picrin/array.scm +++ b/piclib/picrin/array.scm @@ -1,5 +1,7 @@ (define-library (picrin array) - (import (scheme base)) + (import (scheme base) + (scheme write) + (picrin record)) (define-record-type (create-array data size head tail) @@ -87,6 +89,20 @@ (define (array-for-each proc ary) (for-each proc (array->list ary))) + (define (print-array array) + (call-with-port (open-output-string) + (lambda (port) + (display "#.(array" port) + (array-for-each + (lambda (obj) + (display " " port) + (write obj port)) + array) + (display ")" port) + (get-output-string port)))) + + (record-set! 'writer print-array) + (export make-array array array?