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

yellow pages



  (a) The IEEE draft standard should NOT include things that belong in
  the yellow pages. We need to get that set of public, portable programs
  started.  That's Ken's much-needed large library.  Come on gang, it's
  been over two years since Bill Rozas was appointed librarian, and I
  haven't heard of a single contribution. GET WITH IT.

Hear, hear!  Rather than give Ken a hard time, we should thank him
for getting us back to the reason for all this standardization:
so we can write and share portable code.

Rozas volunteered to be librarian for only six months, to get things
started.  It's time for someone else to volunteer, and it's time for
that someone to make lists of what ought to go in the yellow pages
(as Ken has tried to do, but on a bigger scale) and enlist individuals
and companies to contribute those things.  Chris Hanson, for example,
volunteered long ago to contribute a library of string-handling
procedures.  I recently volunteered a portable string->number for the
R4RS syntax.  The new librarian should nag us to do it, and publicize
their availability.

I agree with those who have said that this stuff shouldn't go into the
IEEE standard, at least not now.  Get them into the yellow pages, use
them, and then standardize if appropriate.

I have a few specific comments on Ken's proposals and the discussion
they begat:

There is no such thing as a read/eval/print loop in applications
written using MacScheme+Toolsmith.  The notion of such a thing may
seem natural to a Scheme programmer, but it generally makes no sense
to users of a system written in Scheme.  This shows that the REPL
is part of the programming environment, which we have agreed not to
try to standardize.  The same is true of RESET.

The reason that Ken's ERROR (which corresponds to CERROR in MacScheme)
can be a procedure rather than a special form is that programmers can
avoid calling it in a tail-recursive position if think they might want
to examine the environment of the procedure from which it is called.
That is, they can write (BEGIN (ERROR ...) #T) instead of (ERROR ...)
if they want.  I suspect that anyone who prefers a special form to this
is probably going to be unhappy with Scheme anyway.

There are several semantically distinct notions of structures, each
with its own set of advantages.  Compare, for example, the structures
used in PC Scheme with the system based on structural subtyping that
is distributed with MacScheme 2.0; compare both with the structures
used in the forthcoming book by Friedman, Haynes, Kohlbecker, and
Wand; compare all three with the records proposed last year by Rees.
I think we should first get half a dozen structure packages into the
yellow pages, wait a couple of years, and then see if people prefer
one to the others.

I don't see the need for a conditional compilation facility.  Most
conditionalization can be handled in the load file, and the rest can
be handled with things like

  (define make-bit-vector
    (case **implementation**
      ((macscheme) make-bytevector)
      (else (lambda (size) (make-string size #\0)))))

If the objection to this is the code size for the case expression,
the solution is to wait for the macro package and use a macro instead.
If the objection is that calls to make-bit-vector might not be as
efficient as calls to make-vector or make-bytevector, then I think
that's a different problem that doesn't have much to do with conditional
compilation.

Peace, Will