Sent early, oops. I leave it for debate if a mixed atoms/keywords should be supported in *the additional proposal*: namely, how something like *import <module>, only: [:guards, sigil_URL: 2]* would behave, and warn on overlap, for example if *[:sigils, sigil_URL: 2]* was provided as a selector.
On Sunday, October 22, 2023 at 12:27:21 AM UTC-5 Christopher Keele wrote: > Currently, *import <module>, only: <selector>* accepts as a selector > either: > > - a keyword list of functions/arities > - *:functions* to import only all functions > - *:macros* to import only all macros > > Additionally, the selector can be *:sigils*, which only imports a > specific subset macros: those known to be sigils (based on the naming > convention of *defmacro sigil_...*). > > *I propose* extending the selector to allow *:guards*, which would only > import macros from the *<module>* labelled as *@doc guard: true* > (including, automatically, macros defined via *defguard* > <https://github.com/elixir-lang/elixir/blob/927b10df80ee1c1c7396e68efe00d06bc3e80420/lib/elixir/lib/kernel.ex#L5684> > ). > > Similar to the *__using__* and *sigil__...* macros, guards are a > commonly-desirable-to-import subset of a module's macros. Additionally, > this would reduce the cognitive dissonance between the fact that a macro > defined as a *defguard* is not transparently a *defmacro* under the > covers. > > In programming, the hardest problems involve going from the 0 to 1 case, > and the 1 to 2 case, after which hopefully you've solved for N + 1 cases. *As > an additional proposal*, I propose supporting atom lists as a selector in > *import > <module>, only: <selector>*. This would elegantly allow for the common > case of only importing high-value unqualified macros; namely: *import > <module>, only: [:sigils, :guards]* without conflicting with the > functions/arities keyword selector format. Mixing a *:macro* selector > with either *:sigils* or *:guards* in an atom selector list would issue a > compiler warning about the redundancy. > > As former proposal handles my use-case, and the latter is a natural but > not-required extension to the feature, I leave it for debate if a mixed > atoms/keywords should be supported in the additional proposal: namely, > something like *import <module>, only: [:guards, sigil_URL]* > -- 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/370a0795-6b51-4721-8a26-25843eb2d998n%40googlegroups.com.