This page is part of the web mail archives of SRFI 10 from before July 7th, 2015. The new archives for SRFI 10 contain all messages, not just those from before July 7th, 2015.
Date: Tue, 5 Oct 1999 18:42:45 GMT
From: oleg@xxxxxxxxx
> The only way to supply contructor functions in SRFI-10 is by doing
> (define-reader-ctor <symbol> <proc>).
No. The only requirement SRFI-10 mandates is that "There must be a way
to declare an association between a symbolic tag and the corresponding
constructor-procedure." SRFI-10 goes on to _suggest_ that an
implementation may want to implement a define-reader-ctor function for
that purpose.
This was not at all clear to me from reading SRFI-10. I suggest
that you make it much more explicit. You could say something like:
"An implementation of SRFI-10 must provide some method for
associating symbolic tags with constructor procedures. For
example, it might provide a `define-reader-ctor' function for
that purpose."
I admit SRFI-10's normative silence about precise ways to
define reader-constructor associations may sound like a cop-out. Yet
is is intentional: the purpose of SRFI-10 is to extend the _protocol_
by which a Scheme system communicates with an external world. If my
and your applications run by a SRFI-10-compliant system, and I send
you a string
"#,(f32 1.0 2.0 3.0)"
then you know what I am trying to say. What you're going to do about
this -- reject or accept my request for constructing a value -- is
another matter entirely.
No, I have no idea what you are trying to say, because I have no
idea what procedure `f32' refers to.
I don't think SRFI-10 is way out of the line in this
respect. For example, SRFI-0 talks about feature identifiers -- yet it
gives no details how an implementation happens to have these
identifiers defined, and how a user may extend the system with more
identifiers (if he can at all).
But SRFI-0 does say what each feature identifier means: it means that
the feature in the associated SRFI document is present. If I see a
program like
(cond-expand ((and srfi-1 srfi-17)
(write 1))
(else))
then I know to look at the SRFI-1 and SRFI-10 documents to find out
what the program means. If I see
#,(f32 1.0 2.0 3.0)
in a program all I know is that the value will be the result returned
by applying some arbitrary function to `(1.0 2.0 3.0). This doesn't
tell me very much about what the program means.
-Richard Kelsey