Re: Another alternative (Re: format strings are the Right Thing)
Alex Shinn 30 Dec 2003 04:22 UTC
On Mon, Dec 29, 2003 at 01:55:32PM -1000, Shiro Kawai wrote:
> I got an impression that this format string discussion has similarity
> to the regexp pattern language---it defines a mini-language,
> it has long history tons of variations, it is concise in typical
> usage but can't be composed well and tend to produce an
> incomprehensible code when one try to push it too hard.
> And Olin Shivers showed a solution, SRE.
But SRE is still a mini-language. Indeed, I've been suggesting
possibilities of using arbitrary lists or more verbose format strings.
I think the primary arguments are against using any kind of
mini-language at all vs. just using normal function composition of
write and display.
My second re-implementation of format is at
http://synthcode.com/scheme/format2.scm
which does something similar to what you suggest. Actually, CL *does*
have a macro to general format closures, but there's no reason we need
to use macros. The new format has a customizable parser, with
customizable dispatch characters, and multiple inheritance of other
dispatch closures. This (as I suggested in an earlier mail) lets you
build a tower of format procedures. It also lets you cache static
formatters, so you can write
(define my-fmt (srfi-48-format 'static-formatter "s: ~S b: ~B"))
and apply my-fmt to format arguments without re-parsing.
Included examples are implementations of SRFI-28 and SRFI-48, an
implementation of SRFI-19 that is much faster than the current SRFI-19
(and more customizable), and a simple printf implementation (which you
could inherit from and replace the % with a ~).
Currently I'm trying to decide how to best pass state around when you
want, for example, a column formatter, and hopefully how to avoid that
for format strings that don't use it.
--
Alex