|
The ". $" notation (was: Re: how useful are collecting lists?) Alan Manuel Gloria (18 Mar 2013 01:26 UTC)
|
|
Re: The ". $" notation
Shiro Kawai
(18 Mar 2013 02:42 UTC)
|
|
Re: The ". $" notation
Alan Manuel Gloria
(18 Mar 2013 02:44 UTC)
|
|
Re: The ". $" notation
Shiro Kawai
(18 Mar 2013 04:45 UTC)
|
|
Re: The ". $" notation
David A. Wheeler
(18 Mar 2013 16:25 UTC)
|
|
Re: The ". $" notation
Alan Manuel Gloria
(19 Mar 2013 00:17 UTC)
|
|
Re: The ". $" notation
David A. Wheeler
(19 Mar 2013 03:28 UTC)
|
|
Re: The ". $" notation
Alan Manuel Gloria
(19 Mar 2013 05:52 UTC)
|
|
Re: The ". $" notation
David A. Wheeler
(19 Mar 2013 10:44 UTC)
|
|
Handling scomments after "."
David A. Wheeler
(19 Mar 2013 03:41 UTC)
|
|
Re: Handling scomments after "."
David A. Wheeler
(19 Mar 2013 04:12 UTC)
|
|
Re: The ". $" notation (was: Re: how useful are collecting lists?)
David A. Wheeler
(18 Mar 2013 03:09 UTC)
|
On 3/14/13, Alan Manuel Gloria <xxxxxx@gmail.com> wrote:
> On 3/14/13, David A. Wheeler <xxxxxx@dwheeler.com> wrote:
>> I said:
>>> > Hmm. If that's a *problem*, one solution without significantly
>>> > changing
>>> > the existing semantics might be to allow <*...*> after ".".
>>
>> Alan Manuel Gloria <xxxxxx@gmail.com> wrote:
>>
>>> Ara ara, I thought this was *already* allowed...
>>
>> Actually, they weren't. I was trying to be picky about what's allowed
>> after
>> "." (e.g., I don't think "$" and "\\" are sensible),
>
> EEeeeeeh??
>
> Well, \\ isn't sensible because it ends the current expression so it
> comes out as something like (. ), which doesn't make sense), but why
> not "$"?
>
> Say:
>
> foo $ a b
> ===>
> (foo (a b))
>
> foo . $ a b
> ===>
> (foo . (a b))
> ===>
> (foo a b)
>
> ....hmmm.
>
> Okay, so there's really no use for $ after . LOL. I can't think of a
> use case for when you'd rather have a ". $" instead of just writing
> the next datum directly.
>
Okay, here's something we can use ". $" for:
SRFI-26 provides a "cut" operator that, in s-expressions, looks likes this:
(cut proc arg arg <> arg arg <...>)
==macro-expansion==>
(lambda (x1 . x2)
(apply proc arg arg x1 arg arg x2))
By s-expression rules, we can re-express it as:
(cut . (proc arg arg <> arg arg <...>))
By t-expression rules:
cut . (proc arg arg <> arg arg <...>)
To reduce the parentheses, we could (I propose!!) do:
cut .
proc arg arg <> arg arg <...>
Or alternatively:
cut . $ proc arg arg <> arg arg <...>
--
Basically, in the case of cut, while ". $" is effectively a no-op, it
separates, syntactically, the procedure call from the form that
provides a limited extension of the procedure call's semantics (in the
case of cut, it adds <> and <...> syntaxes). A user might, in the
future, be able to think of other extended formulations which ". $"
could then support.
For another example:
map f as bs ; where f is a two-argument function.
We might want to express it as:
map . $ f as bs
Where we might conceptually think "The syntax 'map . $' makes the
syntactically-subsequent call 'map' a function over lists of its
arguments, instead of just applying a function to its arguments
directly."
This riffs off my insight in SRFI-105:
(cut . { <> + b }) ==> (cut . (+ <> b)) ==> (cut + <> b)
(map . { as + bs }) ==> (map . (+ as bs)) ==> (map + as bs)
--
So my proposal is:
1. Allow "foo . EOL INDENT x ..." ==> "(foo . (x ...))"
2. Allow "foo . $ x ..." ==> "(foo x ...)"
What does everyone think??
Sincerely,
AmkG