[r6rs-discuss] [Formal] Provide a way to define nongenerative records without specifying <uid>

From: Michael Sperber <sperber>
Date: Sun Nov 26 08:25:50 2006

Abdulaziz Ghuloum <aghuloum_at_cs.indiana.edu> writes:

> Provide a way of defining nongenerative records without having to
> specify a specific <uid>. The macro expander can generate the <uid>
> for me if I don't care about what the <uid> is. I recommend using
> (nongenerative #t) to mean just that: a nongenerative record
> definition. (nongenerative <uid>) still means a nongenerative
> record with the specific <uid>.

While this is intruiging, there are some questions in corner cases.
I'm not really an expert on generativity, so please excuse me if any
of the following are too stupid:

- If macros expand into a record-type definition with (nongenerative
  #t), do I get a new record type every time? (I'm assuming yes.)

- If I `eval' the same form (up to eq?) containing a record-type
  definition, do I get a new record type every time? (I'm also
  assuming yes.)

While the answers may seem obvious enough when thinking about the
expansion process, they may be less obvious when actually using
`define-record-type' casually, for example by doing simple abstraction
using macros.

I'm also a bit worried about the fact that, while the current
explicit-naming layer is fully implementable using `syntax-rules',
this addition would (I think) destroy that property. I know you don't
care about this, but others may.

-- 
Cheers =8-} Mike
Friede, V?lkerverst?ndigung und ?berhaupt blabla
Received on Sun Nov 26 2006 - 08:25:46 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:00 UTC