C# isn't the only OO language to have references. PHP has them too,
although the awkwardness isn't the references themselves as much as
how the language integrates with them. OCaml also has reified
references as separate from their mutable record properties.

Note that C#'s "out" parameters aren't the same as what's being
proposed here. Ron's proposal shares more in common with Rust's `foo:
&mut Foo` parameters and C/C++'s `&foo` (address-of) operator than
C#'s `out` parameters, since the proposal doesn't restrict their use
to just parameters, and it doesn't just treat them as alternate return
targets. C# has those just for C interop and little else, while Rust
and OCaml have them for general use. If we're going to have
general-use references, let's not mimic C#'s very awkward mess when we
do it.

(JS is a much lower level language than it looks. It abstracts less
than most other common dynamic languages.)

-----

Isiah Meadows
[email protected]

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


On Mon, Mar 19, 2018 at 8:37 PM, J Decker <[email protected]> wrote:
> Ahh parameters by reference yes have wished for that...
>
> ref is C#-ism to me... which also maybe 'out' which really isn't different
> in JS.... in C# it enforces that the value is set in the function receiving
> an out 'must give value to parameter'.
>
>
> On Mon, Mar 19, 2018 at 5:28 PM, Isiah Meadows <[email protected]>
> wrote:
>>
>> This is basically what I was proposing, ironically enough. There's a
>> few small differences, but the only one that substantially varied from
>> mine I filed an issue in your repo against. (I almost went for
>> `value`.)
>>
>> BTW, yours looks a *lot* like OCaml's `ref 'a` type, which is just
>> sugar for `{mutable contents : 'a}`. The only difference is that OCaml
>> doesn't allow you to take a reference to a mutable property, while
>> yours does.
>> -----
>>
>> Isiah Meadows
>> [email protected]
>>
>> Looking for web consulting? Or a new website?
>> Send me an email and we can get started.
>> www.isiahmeadows.com
>>
>>
>> On Mon, Mar 19, 2018 at 7:57 PM, Ron Buckton <[email protected]>
>> wrote:
>> >> -----Original Message-----
>> >> From: es-discuss <[email protected]> On Behalf Of Isiah
>> >> Meadows
>> >> Sent: Monday, March 19, 2018 3:21 PM
>> >> To: Michael J. Ryan <[email protected]>
>> >> Cc: es-discuss <[email protected]>
>> >> Subject: Re: Pointers
>> >>
>> >> And even if we *could* get pointers into JS, I'd *strongly* not want it
>> >> to be
>> >> like what's proposed here. Instead, I'd prefer an object encapsulating
>> >> a
>> >> reference to a variable, something like this (although engines could
>> >> avoid the
>> >> ceremony of closures here):
>> >>
>> >> ```js
>> >> let foo = 1;
>> >>
>> >> func(ref foo, bar)
>> >> // Equivalent to:
>> >> func({deref: () => foo, set: v => foo = v}, bar)
>> >>
>> >> function func(ref foo, bar) {
>> >>     foo += 2
>> >> }
>> >>
>> >> // Equivalent to:
>> >> function func(foo) {
>> >>     foo.set(foo.deref() + 2)
>> >> }
>> >> ```
>> >
>> > I put together a strawman for this last year at
>> > https://github.com/rbuckton/proposal-refs, but I haven't had much time to
>> > work on it.
>> >
>> > Ron
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to