[r6rs-discuss] [Formal] (r6rs base) must also export _ and ... at level 1
I'm responding as a user/implementor, not as an editor.
> > A potentially bigger issue is that some of these names are common enough
> > that people are likely to stomp on them by accident and be frustrated when
> > define-record-type reports a syntax error for input that is apparently
> > well formed.
>
> Since imported identifiers cannot be redefined, it is impossible to stomp on
> these identifiers if they are bound in (r6rs records).
That's incorrect, even if one ignores the likelihood that implementations
will provide traditional interactive environments. They can be stomped on
by local bindings, which is what I think is most likely:
(define foo
(lambda (fields)
---
(let (---)
(define-record-type foo (fields (mutable x))) => syntax violation
---)))
> > For such literals, should we consider using symbolic equivalence, e.g.,
> > recognize the literal 'fields' as such even if 'fields' has some different
> > binding from its binding (or non-binding) in (r6rs library)?
>
> This is a possibility. However, I think it would make at least some of the
> macros inexpressible using syntax-rules only, to which some might object.
True.
> > This would
> > prevent us from doing some of the "useful things" above, but it might save
> > more than a compensating amount of grief. Should we do the same for else
> > in case, which can appear only where it cannot be confused for an
> > identifier reference?
>
> I believe some may be confused if the else in cond is treated differently from
> the else in case.
I agree. It's only food for thought.
Kent
Received on Thu Jan 25 2007 - 10:26:30 UTC
This archive was generated by hypermail 2.3.0
: Wed Oct 23 2024 - 09:15:01 UTC