Re: Format strings are wrong
Paul Schlie 26 Dec 2003 18:36 UTC
Where a basic implementation of an extend (string ...) function using
mzscheme's module system could alleviate the necessity for the most
common historical uses of (format ...) for basic string formatting:
(module string mzscheme
(provide (rename new-string string))
(define (new-string . params)
(letrec ((loop (lambda (val rest space)
(string-append
(if space " " "")
(cond
((string? val) val)
((number? val) (number->string val))
((symbol? val) (symbol->string val))
((list? val) (string-append
"(" (loop (car val) '() #f)
(loop (cadr val) (cddr val) #t) ")"))
((char? val) (string val))
(else (begin (error'string) "")))
(if (pair? rest) (loop (car rest) (cdr rest) space) "")))))
(loop (car params) (cdr params) #f))))
(require string)
(define size 3)
(define what 'apples)
(string "I have " size " " what ", a character: " #\c
", and a list: " '(a 3.12 1/2 (f) symbol) ".")
-> "I have 3 apples, a character: c, and a list: (a 3.12 1/2 (f) symbol)."
-paul-