It is not about being desirable for pipeline, I only explained why there
isn't a warning there and why we didn't have to change the pipe to not get
a warning. It just worked which makes perfect sense because there is no
ambiguity there.

And name clash is the ambiguity. It is only unclear what they mean because
the names can clash. And I agree coming up with better names is part of the
solution but I have also explained that, because the conflict happens with
functions, the changes are often disjoint. Person A found it reasonable to
name their variables conn. At some point Person B found it reasonable to
add a function named Plug.Test.conn/0. And now there is the ambiguity and a
hard to debug issue due to the composition of two possibly good decisions.
I believe that's why the issue became more apparent and more frequent as
projects and the community grew.

Another good solution to this problem would be to rely less on imports. But
better names and less imports, although good practices, do not effectively
solve the issue.

You are correct in pointing out that the issue we are solving with this
warning happens in rebinding. When you rebind a variable, you need to be
careful of changing the meaning of later uses of that variable. My counter
argument though is that I have a *variable* changing the meaning of a
*variable* and since variables belong to the current scope only (and the
scope rules got saner with time), it is simpler to grasp. That's different
from a variable changing the meaning of a *function*. Which is harder to
relate with.

The more I explain this, the clearer it becomes to me variables and
functions have no business in stepping on each other's namespaces.

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JHiNn3OeND62tj33Rn4XgMoA2B-enBwtiqnBENcsvt-A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to