Most of the time I use primitive display
, or print functions:
;; displays a series of args to stdout
(define (print . args) (for-each display args) (flush-output-port) )
;; displays a series of args to stdout, then newline
(define (println . args) (for-each display args) (newline) (flush-output-port) )
;; displays a series of args to given port
(define (fprint port . args) (for-each (λ (x) (display x port)) args) (flush-output-port port) )
;; displays a series of args to given port, then newline
(define (fprintln port . args) (for-each (λ (x) (display x port)) args) (newline port) (flush-output-port port) )
;; displays a series of args to stderr, then newline
(define (errprintln . args) (let [ (port (current-error-port)) ]
(for-each (λ (x) (display x port)) args) (newline port) (flush-output-port port)
))
but sometimes I actually need to format things:
(import (prefix (srfi s19 time) tm: ))
(format #f "~8a ~10:d ~20a" name score
(tm:date->string (tm:current-date) "~Y-~m-~d ~H:~M:~S") )
Common Lisp format works as described in Chez Scheme, using #t/#f for destination, and some other Schemes as well; but most Schemes only have the nearly-useless SRFI 28. I'm aware of cat/fox/etc combinatorial formatters, but they're very verbose.
Chez also has date/time functions, but no formatter, so using SRFI 19 - nicely, SRFI 19 mostly does sane things, it's not like C's strftime
.