define-reader-ctor is merely an implementation hint oleg@xxxxxx (05 Oct 1999 18:44 UTC)
Re: define-reader-ctor is merely an implementation hint Richard Kelsey (05 Oct 1999 19:25 UTC)
Re: define-reader-ctor is merely an implementation hint Marc Feeley (05 Oct 1999 20:01 UTC)

Re: define-reader-ctor is merely an implementation hint Marc Feeley 05 Oct 1999 20:01 UTC

> > 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. SRFI-10 does not say that define-reader-ctor is the
> required method to build tag-constructor associations, let alone that
> it is the only method (see also below).

There is another alternative for defining the constructors within the
source code.  You could simply use the #,(...) form itself to perform
a definition while the program is being read.  For example you could:

'#,(define-reader-ctor 'box list)
'#,(define-reader-ctor 'f32 f32vector)

(define x '(things #,(box 123) #,(f32 1.0 2.0 3.0)))

Note that this assumes that define-reader-ctor is itself declared
as a reader constructor.

This doesn't solve the problem of specifying to the compiler any
non-standard procedures that are to be passed to define-reader-ctor,
but at least it will work when the constructors can be expressed in
standard Scheme.

I don't actually like this approach, but I mention it for the record.

Marc