[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: new function or modify read

This page is part of the web mail archives of SRFI 38 from before July 7th, 2015. The new archives for SRFI 38 contain all messages, not just those from before July 7th, 2015.



> And as far as precedent goes, PP (or PRETTY-PRINT) is already
> widely disseminated through SLIB, if nothing else. There is plenty of
> precedent for alternate names for alternative I/O operations.

I'm not saying an implementation shouldn't define PP or PRETTY-PRINT
(in fact Gambit-C does exactly this).  This can easily be justified
by "convenience of debugging" reasons.  I typically use PP to insert
traces in my code or check the definition of a function from the REPL.

But there is a big difference between an API aimed at programming
applications (where being more verbose is not a real issue if it
allows you to access more features) and one aimed at debugging or
quick development.

> Separate procedures is much better.

So you wouldn't mind having to implement (and use) these procedures:

  write
  write-shared
  pretty-print
  pretty-print-shared
  write-with-radix
  write-shared-with-radix
  pretty-print-with-radix
  pretty-print-shared-with-radix
  write-show-hidden
  write-shared-show-hidden
  pretty-print-show-hidden
  pretty-print-shared-show-hidden
  write-with-radix-show-hidden
  write-shared-with-radix-show-hidden
  pretty-print-with-radix-show-hidden
  pretty-print-shared-with-radix-show-hidden

And what happens when you add one more feature?  Imagine the number
of SRFIs to write (and in your case review), the typos, the code
bloat, etc.

> I would *not* want all of the
> writes within a "parameterize"d block to suddenly get
> pretty-printed. There might be debugging messages buried in
> there. There might be writes going on to other ports. An out-of-band
> dynamically scoped write function (or read function) is too horrible
> to contemplate.

But this will not happen if you code your calls to write in this style:

  (parameterize ((write-shared #t)
                 (write-radix 16)
                 (write-prettily #t))
    (write X))

It is only if you start using parameterize in its full generality that
you can encounter such effects, but I would view this as a problem
with your coding style, not with the interface to "write".

Marc