Email list hosting service & mailing list manager
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-