Partial Expression proposal

Isiah Meadows isiahmeadows at gmail.com
Wed Dec 27 20:17:02 UTC 2017


My concern: I get the concept, and could see how at the first level
(e.g. `#? + ?`) it could be useful, but I can tell you that this
doesn't look especially obvious, and starts to look almost like the
line noise of some Perl or APL [1]/J [2]/etc.:

```
// Example 1:
let foo = #foo(#???:??)

// Example 2:
let constant = ##??

// Example 3:
let makeAdder = ##?+??
```

And I agree with Mike in that it does remind me of De Bruijn indices.
Those are nice in binary encodings, but they tend to start looking
like line noise after sufficient depth. (An entire esoteric language
has been formed based on this whole thing: Binary Lambda Calculus
[3].)

Oh, and this will most *certainly* conflict with the stage 3 private
property proposal:

```js
let bar = () => console.log("outer")
class Foo {
    #bar = () => console.log("inner")

    method() {
        // Should this return a thunk or log "inner"?
        list.map(##bar(1, 2, ?))
    }
}
```

[1]: https://en.wikipedia.org/wiki/APL_(programming_language)
[2]: https://en.wikipedia.org/wiki/J_(programming_language)
[3]: http://web.archive.org/web/20161019165606/https://en.wikipedia.org/wiki/Binary_lambda_calculus

-----

Isiah Meadows
me at isiahmeadows.com

Looking for web consulting? Or a new website?
Send me an email and we can get started.
www.isiahmeadows.com


On Wed, Dec 27, 2017 at 2:55 PM, Tamás Halasi <trusted.tomato at gmail.com> wrote:
>> This sentence ends abruptly.  What would this proposal improve?
>
> Oops, I accidentally pressed Send...
> So, it would improve functional programming in general, the examples are in
> the README.
>
>> Is this lambdas with De Bruijn indices?
>
> Hmm, I haven't heard of them yet, but by looking at the surface, they seems
> to be similar.
>
>> You have ?? and ??? for referring to outer layers.  Is there no ambiguity
>> there?
>
> That's a very good point! I haven't thought of that. I can't think of a
> solution, the lookahead is indeed very bad. I opened an issue. I think the
> notation (for accessing arguments from outer layers) will have to be changed
> / removed.
>
> Thanks for the feedback! :)
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>


More information about the es-discuss mailing list