<div dir="ltr"><div dir="ltr"><div dir="ltr">For existing beam code that relies on tuple calls (parameterized modules), there is now an upgrade path that allows you to bring the old code up on OTP 21 before you recompile with the +tuple_calls compiler option (which does not exist in OTP 20 and earlier):</div><div dir="ltr"><a href="https://github.com/erlang/otp/pull/2113">https://github.com/erlang/otp/pull/2113</a><br clear="all"><div><div dir="ltr" class="gmail_signature"><br></div><div dir="ltr" class="gmail_signature">For current users of OTP 21, this changes nothing (i.e., there is no tuple dispatch) unless you explicitly pass the new '+ztma true' flag.</div><div dir="ltr" class="gmail_signature">(The flag will not be available in OTP 22, so this is just for the transition.)</div><div dir="ltr" class="gmail_signature"><br>        /Richard</div></div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Den fre 14 apr. 2017 kl 15:00 skrev Fred Hebert <<a href="mailto:mononcqc@ferd.ca">mononcqc@ferd.ca</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 04/14, José Valim wrote:<br>
>This behaviour is considered by most in the community to be undesired <br>
>and confusing, as it obfuscates the meaning of the code and adds <br>
>indirection.<br>
><br>
>Please let me know if there are other options available,<br>
><br>
>I will be glad to send patches and implement the required parse-transforms<br>
>if this is accepted by the OTP team.<br>
><br>
<br>
One thing to consider is that this code is a remnant of parametrized <br>
modules, which have been removed back in 2012. See <a href="https://web-beta.archive.org/web/20121019180935/http://www.erlang.org/news/35" rel="noreferrer" target="_blank">https://web-beta.archive.org/web/20121019180935/http://www.erlang.org/news/35</a><br>
<br>
<br>
> To allow for source code compatibility, the board decides to only<br>
> remove the syntactic support for parameterized modules. This means:<br>
> <br>
> * Apply with tuple modules will be retained, supported and properly documented.<br>
> <br>
> [...]<br>
> <br>
> * The parser will accept the syntax for implementation of<br>
>   parameterized modules [...]<br>
> <br>
> * A parse_transform handling source code implementing a parameterized<br>
>   module will be published in the public domain, free to use and<br>
>   include in any package needing it. It will however not be part of OTP.<br>
>   As it uses supported and documented functionality, it will however<br>
>   be expected to work for forthcoming releases as well, or at least<br>
>   to be possible to adopt to forthcoming releases.<br>
<br>
This is to say the OTP team made a commitment to supporting tuple calls <br>
as a way to remove parametrized modules and keep the code working.<br>
<br>
Removing tuple calls must at the very least ensure a seamless transition <br>
to keep working with the parametrized module parse transforms, and <br>
moreover have the guarantee that it will "be expected to work for <br>
forthcoming releases" because it "uses supported and documented <br>
functionality".<br>
<br>
Regards,<br>
Fred.<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" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div>