This page is part of the web mail archives of SRFI 48 from before July 7th, 2015. The new archives for SRFI 48 contain all messages, not just those from before July 7th, 2015.
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-