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.