Re: SRFI 105: Curly-infix-expressions John Cowan 28 Aug 2012 16:27 UTC

David A. Wheeler scripsit:

> It'd be easy for it to *say* "equal?", and recommend checking for
> cycles.  That does complicate the implementation slightly, though not
> badly. R6RS, and R7RS draft 7, have equal? check for cycles but don't
> say what happens if there ARE cycles :-(, which makes it hard to use
> portably.

Draft 7 isn't yet published, but soon will be.  Draft 6 is the current
published draft.

R6RS says that `equal?` "returns #t if and only if the (possibly
infinite) unfoldings of its arguments into regular trees are equal as
ordered trees."  I sort of know what that means, but it isn't the kind
of thing I'd like to put into a standard.  We have a window in the next
few days to get better language into draft 7, if you have any on tap.

> For portability the sample implementation would probably have to roll
> its own check, to make sure it actually works widely on real systems.

It's not obvious to me why you want to bother with this.  No Scheme I
know of behaves well in the presence of cycles *in code*, and indeed
R7RS prohibits them explicitly.  I know that curly-expressions can be
used outside of code, but I expect (and I think you expect too) that
code will be their dominant use.

> Do you think it's worth supporting "equal?"?  It is slightly more
> complicated to implement (it's hard to beat "eq?").  However, it would
> be much more general, e.g., it'd allow the use of ,op.

I think it's a win to support `equal?`, with or without cycle detection.

> > R6RS #!-switch is the closest I can think of that can make a source
> > file self-descriptive about the lexical syntax it uses.  Did you
> > think about using something like #!c-expr ?
>
> A switch might work, though I think the #! syntax for switches is
> absurd; the #! sequence is ALREADY reserved by most Unix/Linux
> systems, and they will not change it for Scheme :-(.

Only as the first two characters of a file.  Putting a blank line before
a Scheme-specific switch will defeat the Unix interpretation (which, by
the way, is not part of Posix, though quite pervasive in everything but
Windows).

> > Of course you can argue that it's Gauche's responsibility to provide
> > a switch to non-standard syntax, e.g. #!gauche-curly-syntax, which
> > is reasonable.
>
> That's exactly what I'll argue.  If there's a way we can simplify
> transition, though, I'd love to hear it.

I think the SRFI should prescribe the switch (say, #!srfi-105),
since there is no reason why it should be different on different
implementations.

--
Why are well-meaning Westerners so concerned that   John Cowan
the opening of a Colonel Sanders in Beijing means   xxxxxx@ccil.org
the end of Chinese culture? [...]  We have had      http://www.ccil.org/~cowan
Chinese restaurants in America for over a century,
and it hasn't made us Chinese.  On the contrary,
we obliged the Chinese to invent chop suey.            --Marshall Sahlins