Re: [Erlang Forums] [Erlang/OTP Proposals/Proposals: RFC] Re-visiting EEP-0055

Austin Ziegler <[email protected]> Mon, 25 Apr 2022 11:45:15 -0400
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CAJ4ekQvgHUiBK1Z-4x_UO5Go4R_B2us+NQscxUtqCE=phMkruQ@mail.gmail.com>
--00000000000058236d05dd7c77c7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Apr 25, 2022 at 11:27 AM Michael Malter <[email protected]> wrote=
:

> Well I would rather let Joe rest in peace but the reference is probably
> helpful there.
>
> Erlang is simple. I mean, that's how Joe saw it. He expressed it multiple
> times.
>

Simple is in the eye of the beholder. I would disagree with the assessment
that Erlang is simple, but From a Certain Point of View, it is, sure. Is it
simpler than Elixir? In some ways, yes. In other ways, no. If you=E2=80=99r=
e trying
to say that Erlang is a *small* language, then I=E2=80=99d mostly agree. So=
 is
Elixir, though. From certain points of view, Elixir is much easier to
apprehend than Erlang, because Erlang is more sparse than Elixir. As a
language.

That said, it took me a *long* time to understand `=3D:=3D` because it=E2=
=80=99s a
complex, compound sigil (not used _that_ frequently) that I=E2=80=99ve neve=
r seen
in any other language (and I know quite a few). To _me_, `^Value -> =E2=80=
=A6` is
clearer than `NewValue when Value =3D:=3D NewValue`. But that=E2=80=99s me.


> Do you remember the time when that was the Java motto ? Look at Java now.
>

I never remember such a day. Granted, it got much worse after the
introduction of J2EE and all that crap, but I never remember Java being
"simple".


> Is it so hard to understand what we are saying ? For once it's pretty
> clear and without many diverging opinions.
>

Except that there *are* numerous diverging opinions. They just tend to be
drowned out by louder people who can=E2=80=99t seem to express their opposi=
tion in
the simple, clear terms that you and Lo=C3=AFc have, and instead are making
purely emotional expressions.

- it's not sufficiently useful to warrant another language features (you
> know, less is more)
> - it's yet another sigil and we hate them.
>

The former is arguable, and I=E2=80=99ve seen little in any of the threads =
about
this EEP to suggest that this is the case. The latter is a matter of taste,
but it=E2=80=99s also a legitimate concern. New sigils shouldn=E2=80=99t be=
 added without
good reason. I=E2=80=99ve seen such discussions in Elixir and Ruby language
discussions, and sometimes a new sigil gets added (`&.` and `->()` in Ruby;
I like the former, hate the latter, although I use it).

Not addressed in the original EEP (probably because it wasn=E2=80=99t origi=
nally
considered) is whether expressing pinning might improve the compiler=E2=80=
=99s
ability to generate better code. It=E2=80=99s been raised on the forum thou=
gh, and
it should be considered. If nothing else, it starts to indicate that there
may be more use than simply avoiding guard clauses (which IMO is worthy in
and of itself).

-a

Le lun. 25 avr. 2022 =C3=A0 17:14, Austin Ziegler <[email protected]> a
> =C3=A9crit :
>
>> On Mon, Apr 25, 2022 at 10:58 AM Stanislav Ledenev <[email protected]>
>> wrote:
>>
>>> One question - why? Just because we can?
>>> Erlang is doomed, Sorry Joe, we f**d things up.
>>>
>>
>> I really can=E2=80=99t help but laugh at over the top reactions like thi=
s and
>> those who can=E2=80=99t help but bash Elixir because they don=E2=80=99t =
like the syntax.
>>
>> What if this syntax (or some other syntax) helps the compiler generate
>> better (safer, faster, *whatever*) code? How would anyone know unless it
>> gets tried? Why would anyone want to try it when they know that a certai=
n
>> vocal subset of the community are going to be pitching embarrassing fits
>> over it?
>>
>> If this is introduced in OTP 26, then stop upgrading. Seriously. Stay on
>> OTP 25 or before. But seriously, stop acting like children about this an=
d
>> saying that things are fucked up (because they=E2=80=99re not; you just =
don=E2=80=99t like
>> this because you don=E2=80=99t like it). The only *real* objection that =
I=E2=80=99ve
>> seen that makes sense to me is from Lo=C3=AFc, which is that it might be=
 better
>> to enable *annotations*, even if the only annotation initially available
>> is for pinning. (My personal feeling on the annotation concept is that
>> `^pin Variable` doesn=E2=80=99t feel right to me, but maybe `^pin:Variab=
le` or
>> `^pin{Variable}` or `^{pin}Variable` or something else, although more
>> sigil-y, would be clearer.
>>
>> I mostly use Elixir, but often read Erlang codebases. On the Elixir core
>> mailing list, there are frequent redirects to approach something as a
>> possible PR to Erlang/OTP because it=E2=80=99s something that should ben=
efit all
>> BEAM languages.
>>
>> Telemetry started as an Elixir library, but was quickly changed to a pur=
e
>> Erlang approach because it makes more sense to be something that all BEA=
M
>> languages can use.
>>
>> Elixir has =E2=80=94 and I suspect both LFE and Gleam both have =E2=80=
=94 *enhanced *the
>> BEAM through wider exposure, code contributions, and other contributions=
.
>> If you can=E2=80=99t argue a feature request like in this EEP on its mer=
its (or
>> lack thereof) without trying to bash Elixir, then maybe you don=E2=80=99=
t actually
>> have an argument, but an emotional outburst, and should just *discard* y=
our
>> rant after writing it.
>>
>> -a
>> --
>> Austin Ziegler =E2=80=A2 [email protected] =E2=80=A2 austin@halostatu=
e.ca
>> http://www.halostatue.ca/ =E2=80=A2 http://twitter.com/halostatue
>>
>

--=20
Austin Ziegler =E2=80=A2 [email protected] =E2=80=A2 [email protected]=
a
http://www.halostatue.ca/ =E2=80=A2 http://twitter.com/halostatue

--00000000000058236d05dd7c77c7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">On Mon, Apr 25, 2022 at 11:27 AM Michael =
Malter &lt;<a href=3D"mailto:[email protected]">[email protected]</a>&g=
t; wrote:<br></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_qu=
ote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-st=
yle:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir=3D"=
auto">Well I would rather let Joe rest in peace but the reference is probab=
ly helpful there.<div dir=3D"auto"><br></div><div dir=3D"auto">Erlang is si=
mple. I mean, that&#39;s how Joe saw it. He expressed it multiple times.</d=
iv></div></blockquote><div><br></div><div>Simple is in the eye of the behol=
der. I would disagree with the assessment that Erlang is simple, but From a=
 Certain Point of View, it is, sure. Is it simpler than Elixir? In some way=
s, yes. In other ways, no. If you=E2=80=99re trying to say that Erlang is a=
 <b>small</b>=C2=A0language, then I=E2=80=99d mostly agree. So is Elixir, t=
hough. From certain points of view, Elixir is much easier to apprehend than=
 Erlang, because Erlang is more sparse than Elixir. As a language.</div><di=
v><br></div><div>That said, it took me a <b>long</b>=C2=A0time to understan=
d `=3D:=3D` because it=E2=80=99s a complex, compound sigil (not used _that_=
 frequently) that I=E2=80=99ve never seen in any other language (and I know=
 quite a few). To _me_, `^Value -&gt; =E2=80=A6` is clearer than `NewValue =
when Value =3D:=3D NewValue`. But that=E2=80=99s me.</div><div>=C2=A0</div>=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"auto"><div dir=3D"auto"></div><div dir=3D"auto=
">Do you remember the time when that was the Java motto ? Look at Java now.=
</div></div></blockquote><div><br></div><div>I never remember such a day. G=
ranted, it got much worse after the introduction of J2EE and all that crap,=
 but I never remember Java being &quot;simple&quot;.</div><div>=C2=A0</div>=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);p=
adding-left:1ex"><div dir=3D"auto"><div dir=3D"auto">Is it so hard to under=
stand what we are saying ? For once it&#39;s pretty clear and without many =
diverging opinions.</div></div></blockquote><div>=C2=A0</div><div>Except th=
at there <b>are</b>=C2=A0numerous diverging opinions. They just tend to be =
drowned out by louder people who can=E2=80=99t seem to express their opposi=
tion in the simple, clear terms that you and Lo=C3=AFc have, and instead ar=
e making purely emotional expressions.</div><div><br></div><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;b=
order-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"=
><div dir=3D"auto"><div dir=3D"auto"></div><div dir=3D"auto">- it&#39;s not=
 sufficiently useful to warrant another language features (you know, less i=
s more)</div><div dir=3D"auto">- it&#39;s yet another sigil and we hate the=
m.=C2=A0</div></div></blockquote><div><br></div><div>The former is arguable=
, and I=E2=80=99ve seen little in any of the threads about this EEP to sugg=
est that this is the case. The latter is a matter of taste, but it=E2=80=99=
s also a legitimate concern. New sigils shouldn=E2=80=99t be added without =
good reason. I=E2=80=99ve seen such discussions in Elixir and Ruby language=
 discussions, and sometimes a new sigil gets added (`&amp;.` and `-&gt;()` =
in Ruby; I like the former, hate the latter, although I use it).</div><div>=
<br></div><div>Not addressed in the original EEP (probably because it wasn=
=E2=80=99t originally considered) is whether expressing pinning might impro=
ve the compiler=E2=80=99s ability to generate better code. It=E2=80=99s bee=
n raised on the forum though, and it should be considered. If nothing else,=
 it starts to indicate that there may be more use than simply avoiding guar=
d clauses (which IMO is worthy in and of itself).</div><div><br></div><div>=
-a</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-c=
olor:rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=
=3D"ltr" class=3D"gmail_attr">Le lun. 25 avr. 2022 =C3=A0 17:14, Austin Zie=
gler &lt;<a href=3D"mailto:[email protected]" target=3D"_blank">halostat=
[email protected]</a>&gt; a =C3=A9crit=C2=A0:<br></div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-lef=
t-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir=
=3D"ltr"><div dir=3D"ltr">On Mon, Apr 25, 2022 at 10:58 AM Stanislav Ledene=
v &lt;<a href=3D"mailto:[email protected]" rel=3D"noreferrer" target=3D"_=
blank">[email protected]</a>&gt; wrote:<br></div><div class=3D"gmail_quot=
e"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204=
);padding-left:1ex"><div dir=3D"ltr"><div>One question - why? Just because =
we can?</div><div>Erlang is doomed, Sorry Joe, we f**d things up.</div></di=
v></blockquote><div>=C2=A0</div></div>I really can=E2=80=99t help but laugh=
 at over the top reactions like this and those who can=E2=80=99t help but b=
ash Elixir because=C2=A0they don=E2=80=99t like the syntax.<div><br></div><=
div>What if this syntax (or some other syntax) helps the compiler generate =
better (safer, faster, <i>whatever</i>) code? How would anyone know unless =
it gets tried? Why would anyone want to try it when they know that a certai=
n vocal subset of the community are going to be pitching embarrassing fits =
over it?</div><div><br></div><div>If this is introduced in OTP 26, then sto=
p upgrading. Seriously. Stay on OTP 25 or before. But seriously, stop actin=
g like children about this and saying that things are fucked up (because th=
ey=E2=80=99re not; you just don=E2=80=99t like this because you don=E2=80=
=99t like it). The only <i>real</i>=C2=A0objection that I=E2=80=99ve seen t=
hat makes sense to me is from Lo=C3=AFc, which is that it might be better t=
o enable <i>annotations</i>, even if the only annotation initially availabl=
e is for pinning. (My personal feeling on the annotation concept is that `^=
pin Variable` doesn=E2=80=99t feel right to me, but maybe `^pin:Variable` o=
r `^pin{Variable}` or `^{pin}Variable` or something else, although more sig=
il-y, would be clearer.</div><div><br></div><div>I mostly use Elixir, but o=
ften read Erlang codebases. On the Elixir core mailing list, there are freq=
uent redirects to approach something as a possible PR to Erlang/OTP because=
 it=E2=80=99s something that should benefit all BEAM languages.</div><div><=
br></div><div>Telemetry started as an Elixir library, but was quickly chang=
ed to a pure Erlang approach because it makes more sense to be something th=
at all BEAM languages can use.</div><div><br></div><div>Elixir has =E2=80=
=94 and I suspect both LFE and Gleam both have =E2=80=94 <i>enhanced </i>th=
e BEAM through wider exposure, code contributions, and other contributions.=
 If you can=E2=80=99t argue a feature request like in this EEP on its merit=
s (or lack thereof) without trying to bash Elixir, then maybe you don=E2=80=
=99t actually have an argument, but an emotional outburst, and should just =
<i>discard</i>=C2=A0your rant after writing it.<br><div><div><div><br></div=
><div>-a<br>-- <br><div dir=3D"ltr">Austin Ziegler =E2=80=A2 <a href=3D"mai=
lto:[email protected]" rel=3D"noreferrer" target=3D"_blank">halostatue@g=
mail.com</a> =E2=80=A2 <a href=3D"mailto:[email protected]" rel=3D"noref=
errer" target=3D"_blank">[email protected]</a><br><a href=3D"http://www.=
halostatue.ca/" rel=3D"noreferrer" target=3D"_blank">http://www.halostatue.=
ca/</a> =E2=80=A2 <a href=3D"http://twitter.com/halostatue" rel=3D"noreferr=
er" target=3D"_blank">http://twitter.com/halostatue</a></div></div></div></=
div></div></div>
</blockquote></div>
</blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"=
 class=3D"gmail_signature">Austin Ziegler =E2=80=A2 <a href=3D"mailto:halos=
[email protected]" target=3D"_blank">[email protected]</a> =E2=80=A2 <a hr=
ef=3D"mailto:[email protected]" target=3D"_blank">[email protected]</=
a><br><a href=3D"http://www.halostatue.ca/" target=3D"_blank">http://www.ha=
lostatue.ca/</a> =E2=80=A2 <a href=3D"http://twitter.com/halostatue" target=
=3D"_blank">http://twitter.com/halostatue</a></div></div>

--00000000000058236d05dd7c77c7--