This page is part of the web mail archives of SRFI 110 from before July 7th, 2015. The new archives for SRFI 110 contain all messages, not just those from before July 7th, 2015.
Below is a more detailed example of what I had in mind. Below is the core of a "neoteric-write-simple" (no port option yet)... followed by example output. --- David A. Wheeler =================================================== (define (neoteric-write-simple x) (cond ((pair? x) (cond ((represent-as-abbreviation? x) ; Format 'x (display (list->string (cadr (assq (car x) abbreviations)))) (neoteric-write-simple (cadr x))) ((or (long-and-boring? x) (not (list? x))) (display "(") ; Format (a b c ...) (neoteric-write-unit-list x) (display ")")) ((symbol? (car x)) (cond ((represent-as-inline-infix? x) ; Format {a + b} (display "{") (neoteric-write-simple (cadr x)) (infix-tail (car x) (cddr x))) ((and (list1? (cdr x)) (pair? (cadr x)) (represent-as-brace-suffix? (cadr x))) ; Format f{...} (neoteric-write-simple (car x)) (as-brace-suffix (cadr x))) (#t ; Format f(...) (neoteric-write-simple (car x)) (display "(") (neoteric-write-unit-list (cdr x)) (display ")")))) (#t ; Format (1 2 3 ...) (display "(") (neoteric-write-unit-list x) (display ")")))) (#t (write x)))) ; Everything else. ===================================================== Sample output: 'x (a b c d e f g h i j k l m n o p q r s t u v w x y z) {a + b} {a + b + c} sin{- theta} fact{n - 1} between(current min max) sin(x) current-time() (1 2 3) 5 boring-symbol {sqrt(x) + sqrt(y)}