To me it makes significantly more sense to list the module first, then the 
things that are being excluded/included, as that is how it is used 
everywhere.  The way Elixir does it now makes the most sense and I would 
not opt for reversing it.

You could, however, make a library with a macro that does something like 
what you wish.


On Thursday, September 15, 2016 at 3:39:55 AM UTC-6, Jaap Frolich wrote:
>
> Hi,
>
> @Jose: I would suggest this to be syntactic sugar to import functions from 
> modules, that is converted behind the scenes to a call to import, only: 
> [...].
> This will add complexity to the language, by creating a new way of 
> importing, but in 99% you can use the new syntax, and only use the 'low 
> level' syntax in macros or special use cases such as when you need 
> 'except'. Another upside is that all the old code keeps working, but we 
> have a nicer syntax for new code.
> I think it can incentivize people to only import the necessary functions 
> and not import all if there is a nicer syntax to it.
>
> @Onorio: While an improvement, I like the proposed syntax more, because in 
> my opinion import a single/a few functions should be the default, and not a 
> special case (with using only).
>
> @Norbert: I am not really in favor of the `import &function_one/1, 
> &function_2/1 from Module` syntax as I think it is less pretty and while it 
> might be easier to implement, semantically it does not really makes sense 
> to me / is intuitive.
>
> Thanks for thinking about this :) Love the language.
>
> Cheers,
>
> Jaap
>
>
>
> On Tuesday, September 13, 2016 at 2:54:20 PM UTC+8, José Valim wrote:
>>
>> Thank you Jaap!
>>
>> The benefit of today's syntax is that the arguments are data, which makes 
>> them easy to control and manipulate. Imagine you want to dynamically import 
>> some data, how do you dynamically build a list or a tuple of {defrecord/2, 
>> extract/2} entries?
>>
>> The data syntax is also what you get back from all of the introspection 
>> functions in Elixir, such as String.__info__(:functions). Also, today's 
>> syntax support `:except` and other options, which are not considered in the 
>> new syntax.
>>
>> I would like to see those points considered before further considering a 
>> new syntax.
>>
>>
>>
>> *José Valim*
>> www.plataformatec.com.br
>> Skype: jv.ptec
>> Founder and Director of R&D
>>
>> On Tue, Sep 13, 2016 at 6:30 AM, Jaap Frolich <[email protected]> wrote:
>>
>>> Hi,
>>>
>>> Currently when we import a single or a few functions from a module this 
>>> is the syntax to do it:
>>>
>>>   import Record, only: [defrecord: 2, extract: 2]
>>>
>>> As this is something that is something quite common to do in a module, 
>>> the syntax can be more user-friendly in my opinion.
>>>
>>>    1. The notation for a function is captured in data, while normally 
>>>    we describe functions with the function/arity notation
>>>    2. By default it imports *everything*, as this is often not what you 
>>>    want, it might be better to make it more explicit
>>>    3. Aesthetics, but that might be personal, I think it does not read 
>>>    as nice
>>>
>>> So how about having something like below syntax in the language:
>>>
>>>   import defrecord/2, extract/2 from Record
>>>
>>>   import * from Record
>>>
>>> This might be hard to implement, other candidates could be:
>>>   
>>>   import {defrecord/2, extract/2}, from: Record
>>>   
>>>   import {*}, from: Record
>>>
>>> As it might be easier to implement in the language using macros.
>>>
>>> (while we keep the existing import macro around.)
>>>
>>> Let me know what you think!
>>>
>>> Cheers,
>>>
>>> Jaap
>>>
>>> -- 
>>> 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/4e514d59-05bd-41c6-a1d5-a634b34ff350%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/elixir-lang-core/4e514d59-05bd-41c6-a1d5-a634b34ff350%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>

-- 
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/f4d35b90-1338-4aec-bc4d-2ab45e9947fa%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to