If you’re asking just my opinion then I wouldn’t add this feature as it
seems to me the case this is solving for happens so rarely that this
wouldn’t be worth it. If folks have a bunch of imports and don’t want to
specify which functions they’re importing specifically, they can still
import the whole module which is even _less_ to type.

But, that said, many folks have a tendency to disagree with me on these
cases, so I can see how this might be a desirable feature for some folks,
and in that case :* seems like a reasonable way to go.

José Valim <jose.va...@dashbit.co> schrieb am Sa. 26. Dez. 2020 um 11:19:

> Good points Devon. Do you think using :* makes it explicit and consistent
> enough, or still not worth it in your opinion?
>
> On Sat, Dec 26, 2020 at 11:11 Wojtek Mach <woj...@wojtekmach.pl> wrote:
>
>> This addition would be nice for importing record macros, defrecord
>> defines 3 different arities: 0, 1, and 2.
>>
>> On 26 Dec 2020, at 09:43, Devon Estes <devon.c.es...@gmail.com> wrote:
>>
>> 
>>
>> This seems like a source of potentially confusing issues to me, as
>> mentioned earlier. I do admit that this would be a very rare occurrence,
>> but in general it seems to go against what I see as one of the common
>> patterns in Elixir, which is that things are often explicit rather than
>> implicit. This explicitness does come at the cost of more typing when
>> writing the code, but it also comes with the benefit of stability and
>> clarity when reading or changing code, which I (personally) see as an
>> overall benefit.
>>
>> That said, if this does get implemented, using the :* atom for the arity
>> would be explicit and would also keep the list passed to import/2 a keyword
>> list. Bare atoms would be fine, too, but I see some value in the
>> consistency of a keyword list for that argument as it removes the need for
>> specific ordering.
>>
>> José Valim <jose.va...@dashbit.co> schrieb am Sa. 26. Dez. 2020 um 09:30:
>>
>>> I believe this was proposed a long time ago but I rejected it because of
>>> name conflicts. For example, imagine you import all of "foo" and on v1 it
>>> means adding both foo/2 and foo/3. However, on v2 the module also defines a
>>> foo/1. There is a chance this new arity will conflict with a local foo/1.
>>>
>>> On the other hand, I would say having a function with the same name and
>>> different arity as an import is something that should be avoided in general
>>> (either by using a different name or not importing it), so I think it is
>>> worth this addition. The only complexity I foresee in implementing this is
>>> skipping the warning if one of the arities is invoked - but that's an
>>> implementation detail.
>>>
>>> Therefore, I propose we do support this feature. My suggestion is to
>>> represent said names with naked atoms, such as:
>>>
>>> import Enum, only: [:at, :map]
>>>
>>> Specific arities go at the end as any keyword list:
>>>
>>> import Enum, only: [:at, map: 2]
>>>
>>> Thoughts?
>>>
>>> On Fri, Dec 25, 2020 at 11:52 PM thojan...@gmail.com <
>>> thojansse...@gmail.com> wrote:
>>>
>>>> >  e.g if you have a function with the same name but one less argument
>>>>
>>>> That can actually also be considered as a function with default values
>>>> (and in the end, default values generate such functions with different
>>>> arities). If not then I think it's a code smell and the function needs to
>>>> be renamed.
>>>>
>>>> On Friday, December 25, 2020 at 11:43:03 PM UTC+1 zachary....@gmail.com
>>>> wrote:
>>>>
>>>>> Sorry, meant to say “in being able to say only import this
>>>>> *function*”, not story :)
>>>>>
>>>>> On Fri, Dec 25, 2020 at 5:42 PM Zach Daniel <zachary....@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> There are theoretical name conflicts from not being able to say “only
>>>>>> import this story”  (e.g if you have a function with the same name but 
>>>>>> one
>>>>>> less argument) what about import Mod, only: [func: 1..3]?
>>>>>>
>>>>>> On Fri, Dec 25, 2020 at 5:36 PM thojan...@gmail.com <
>>>>>> thojan...@gmail.com> wrote:
>>>>>>
>>>>>>> Say function `foo` has multiple default values (two required args,
>>>>>>> two with defaults). When importing, we must specify each arity that is 
>>>>>>> used
>>>>>>> in the calling code, e.g.
>>>>>>>
>>>>>>> ```
>>>>>>> import Foo, only: [foo: 2, foo: 3, foo: 4]
>>>>>>>
>>>>>>> foo(1, 2)
>>>>>>> foo(1, 2, 3)
>>>>>>> foo(1, 2, 3, 4)
>>>>>>> ```
>>>>>>>
>>>>>>> I expected that I could only import `foo/4`, and be able to call
>>>>>>> `foo` with only two arguments and three arguments. Why? Because there 
>>>>>>> is no
>>>>>>> use case to force an imported function to be used only with a specific
>>>>>>> arity. That would even be a code smell.
>>>>>>>
>>>>>>> Could we "generate" [foo: 2, foo: 3]` in addition to `[foo: 4]` to
>>>>>>> support the call using its default values?
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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 elixir-lang-co...@googlegroups.com.
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/elixir-lang-core/28497895-3278-4de0-8423-99f9b9230597n%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/28497895-3278-4de0-8423-99f9b9230597n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>> --
>>>> 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 elixir-lang-core+unsubscr...@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/elixir-lang-core/38192124-1f41-407c-966e-82f223db3719n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/elixir-lang-core/38192124-1f41-407c-966e-82f223db3719n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>>> 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 elixir-lang-core+unsubscr...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JEwAOA2WYnbGAjgNtP3-d8kukc8_ieejX4mprAfBSHsg%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JEwAOA2WYnbGAjgNtP3-d8kukc8_ieejX4mprAfBSHsg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
>>
>> _________________
>> Devon Estes
>> +49 176 2356 4717
>> www.devonestes.com
>>
>> --
>> 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 elixir-lang-core+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elixir-lang-core/CAGowJciKZ25GejXy2gaZ8TipXaECJa8hW9JiZNgOOL1zX1e51w%40mail.gmail.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/CAGowJciKZ25GejXy2gaZ8TipXaECJa8hW9JiZNgOOL1zX1e51w%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> --
>> 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 elixir-lang-core+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elixir-lang-core/F12F687F-F146-4F1B-BA78-6594C6107BEF%40wojtekmach.pl
>> <https://groups.google.com/d/msgid/elixir-lang-core/F12F687F-F146-4F1B-BA78-6594C6107BEF%40wojtekmach.pl?utm_medium=email&utm_source=footer>
>> .
>>
> --
> 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 elixir-lang-core+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2BPWyaEPOUWsRvVeYioF21k1p3AUE9QbTgJd74Qf3nbJQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2BPWyaEPOUWsRvVeYioF21k1p3AUE9QbTgJd74Qf3nbJQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
-- 

_________________
Devon Estes
+49 176 2356 4717
www.devonestes.com

-- 
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 elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGowJcgE4gRU5c%2BaWJeqAWcpoh1w%2B%3DeVqd226Daakj9h4QWTvA%40mail.gmail.com.

Reply via email to