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

Re: why generative?



From: Thomas Bushnell BSG <tb@xxxxxxxxxx>
Subject: Re: why generative?
Date: Thu, 03 Sep 2009 12:28:08 -0700

> On Thu, 2009-09-03 at 09:19 -1000, Shiro Kawai wrote:
> > In most programming languages programmers do give unique names
> > to the different record types with same field specs.  I assume
> > we can ask that much of work to the programmer's side if she
> > wishes to have distinct types.
> 
> In most programming languages programmers also give unique names to
> different procedures.  Scheme is not like that, thank the stars.
> 
> You are assuming that the only value of records is to be like C structs.
> Feh!

That's a misunderstanding.  I meant programmers *could* give
distinct names to the types, especially globally defined ones,
even if they could have anonymous types.   I believe Scheme
programmers usually use globally defined procedures with
distinct names even if they can have anonymous functions.

The procedural layer gives you anonymous types.  Syntactic layers,
both srfi-99 and r6rs, do ask you to name the record type.

The default-generative make-rtd with opt-in nongenerative type
with uid, as defined in R6RS, mandates you to *name* the type
if you simply want to use locally-defined record types to group
values; failing to do so tax you allocation of fresh type
descriptors every time make-rtd is invoked.  Compare it with
anonymous procedures without closing local variables; you can
assume a decent implementation will lift the lambda and avoid
allocating fresh procedures every time.

But that problem is a kind of trade-off, as Will and I discussed.

I see the separate namespace more serious problem.

--shiro