I could get behind that, although having to shuffle the specific arity imports to the end is a bit annoying. What about `import Enum, only: [at: :all, map: 2]`?
On Sat, Dec 26, 2020 at 3:30 AM José Valim <jose.va...@dashbit.co> wrote: > 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> > . > -- 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/CAK-yb0CAGVhJ1PPrTkHGgTZpvKj_dY%2BX39vXRmxcFVruk12haQ%40mail.gmail.com.