<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Hey, it works for PHP!<br></div><div class="gmail_quote"><br>On Wed, Aug 27, 2014 at 2:51 PM, Dmitry Demeshchuk <span dir="ltr"><<a href="mailto:demeshchuk@gmail.com" target="_blank">demeshchuk@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I, personally, think lists are obsolete too. Instead, everyone should just use maps for everything:<div>
<br></div><div>{ 1 => first_element, 2 => second_element, 3 => third_element }.</div></div><div class="gmail_extra"><div><div class="h5">
<br><br><div class="gmail_quote">On Wed, Aug 27, 2014 at 11:21 AM, Chris Pacejo <span dir="ltr"><<a href="mailto:colanderman@gmail.com" target="_blank">colanderman@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Tuples are clearly unnecessary and a wart in Erlang's design.<br>
Consider all the operations tuples provide:<br>
<br>
Construction: X = {A,B,C}<br>
Destruction: {A,B,C} = X<br>
Pattern matching: case X of {foo,B,C} -> ... end<br>
<br>
Note now that these operations are provided equally by lists:<br>
<br>
Construction: X = [A,B,C]<br>
Destruction: [A,B,C] = X<br>
Pattern matching: case X of [foo,B,C] -> ... end<br>
<br>
And note that lists provide the additional functionality of indexing<br>
and consing, which tuples do not provide.<br>
<br>
Clearly, using tuples instead of lists provides no benefit, and to<br>
simplify the language they should be deprecated in OTP 18, and removed<br>
by OTP 19.  To support this transition, a compiler option can be<br>
provided to maintain the ill-conceived tuple notation for legacy code;<br>
may I suggest +distinguish_homogenous_and_heterogenous_collections.<br>
<br>
Now, surely detractors will claim that the distinction between tuples<br>
and lists signals programmer intent, permits bytecode optimization,<br>
and enables rich typechecking in Dialyzer.  I claim these purported<br>
benefits are bollocks.  I, and no doubt others, routinely find the<br>
need to iterate over tuple elements, and to store unrelated data<br>
together in a single list.  Anyone who claims that such things are not<br>
necessary clearly has not ever written a complex program.  (I suspect<br>
anyone who thinks structurally-typed records and key-value maps serve<br>
different purposes falls into this group.)<br>
<br>
I hope you all agree, and that we can look forward to a future Erlang<br>
supporting lists and maps as its sole data constructors.<br>
<br>
- Chris P<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br>Best regards,<br>Dmitry Demeshchuk
</font></span></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr"><div>Paul Woolcock</div></div>
</div></div>