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

Re: srfi-105 and srfi-38

This page is part of the web mail archives of SRFI 105 from before July 7th, 2015. The new archives for SRFI 105 contain all messages, not just those from before July 7th, 2015.

Shiro Kawai:
> Will #1=f(#1#) mean (#1=f #1#) or #1=(f #1#)?

Great question!

> Since 'f(x) => (quote (f x)), I guess the latter is more
> consistent (that is, after seeing #1=, the reader recurses
> to gather the longest <datum> and then labels it.)

Agreed.  Anyone disagree?

> But I'm not sure the current draft spec is clear enough,
> for, according to srfi-38, the "#1=f" part consists a <datum>.

The expression f(x) is a datum in neoteric-expressions, since it's just another way of writing (f x). It certainly should NOT stop reading after it reads f if an open paren follows immediately.

But I think you're absolutely right, the spec isn't clear enough.  Great catch. So how do we make it clearer?  I think we can clarify this by tweaking the definition and giving an example.

First, in the neoteric-expression definition, change:
"A &#8220;<dfn>neoteric-expression</dfn>&#8221; or &#8220;<dfn>n-expression</dfn>&#8221;
is a curly-infix-expression, with the following modifications where
<var>e</var> is any datum expression:"

"A &#8220;<dfn>neoteric-expression</dfn>&#8221; or &#8220;<dfn>n-expression</dfn>&#8221;
is a curly-infix-expression, but with the following additional syntaxes for a datum where
<var>e</var> is any datum expression:"

With this change, it's clear we're defining datums.

Then let's add the given example:
maps to
#1=(f #1#)

Would that work?  Is there a better way?  Any objections?

--- David A. Wheeler