You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There's a chance that tuple module calls ({module, ...}:function(...)) will be eventually removed, and chances are they are not going to listen to my shouting on the erlang-questions mailing list (http://t.co/iwQdXMKI)
I would like to discuss how can we potentially mitigate this issue in the future development of Elixir, once (if) tuple module calls will be removed. Without having that established, a lot of code produced for Elixir will end up having such calls and the drop will have a major impact on Elixir's users.
I don't have a good solution yet, but I'll try by starting with some brainstorming.
When generating code for variable.function, always insert a check into generated absforms (if it is an atom -> call with it, if it is a tuple, shuffle the arguments around).
Obviously, there would be a concern about performance. Here are few ideas to help mitigating those:
Disable it by default. At least until tuple module calls are dropped in Erlang.
SImilar to common lisp and alikes, allow some optimization directives. This could be used to instruct the compiler that the calls using variable X should be the above "dispatching calls" or not. No idea what kind of syntax should that be (something as stupid as "declare(x, atom)"? :-)
2.1. Use type specifications to infer that instead. Solves the syntax & uniformity issue.
There's a chance that tuple module calls (
{module, ...}:function(...)
) will be eventually removed, and chances are they are not going to listen to my shouting on the erlang-questions mailing list (http://t.co/iwQdXMKI)I would like to discuss how can we potentially mitigate this issue in the future development of Elixir, once (if) tuple module calls will be removed. Without having that established, a lot of code produced for Elixir will end up having such calls and the drop will have a major impact on Elixir's users.
I don't have a good solution yet, but I'll try by starting with some brainstorming.
Idea #1.
When generating code for
variable.function
, always insert a check into generated absforms (if it is an atom -> call with it, if it is a tuple, shuffle the arguments around).Obviously, there would be a concern about performance. Here are few ideas to help mitigating those:
2.1. Use type specifications to infer that instead. Solves the syntax & uniformity issue.
Idea #2.
Do nothing. Lets see how things will pan out
Thoughts?
The text was updated successfully, but these errors were encountered: