I don't think this is needed, but as far as naming suggestions go, perhaps 
`Enum.one/1` would work, as it both indicates that a single element is 
returned, and doesn't necessarily imply ordering like `first` would. 
However, what happens when the Enum is empty? Do we need a bang and 
non-bang version? As others have said, I think that keeping this explicit 
is nicer. You can always add a private helper or a function to a 
project-level utility module if you use this often.

On Saturday, 22 April 2017 18:49:10 UTC+1, Myron Marston wrote:
>
> I don't think this would improve Elixir.  Elixir favors explicitness over 
> implicitness and fewer keystrokes and the only argument for this seems to 
> be convenience.
>
> More worrying, `Enum.take/2` returns a list of items.  If there was an 
> `Enum.take/1`, I'd expect it to simply default the number of items taken, 
> but to still return a list (even if it's just a list of one item).  But 
> from this thread it sounds like you're wanting an `Enum.take/1` that 
> returns just the first item without it being wrapped in a list.  IMO, that 
> would be incredibly confusing.  It would lead to different behavior for 
> `&Enum.take/1` and `&Enum.take(&1, 1)` which would be very 
> counter-intuitive.
>
> Myron
>
> On Saturday, April 22, 2017 at 7:10:27 AM UTC-7, Amos King wrote:
>>
>> You want to add a default of 1 to Enum.take/2? I personally don't mind 
>> that but I think it takes away from the explicit nature of the module. I 
>> prefer explicitness if we are only saving a few keystrokes. 
>>
>> Amos King
>> Binary Noggin
>>
>> On Apr 22, 2017, at 04:12, Sam Davies <[email protected]> wrote:
>>
>> I understand the reasoning. That's why I suggest the name `take` NOT the 
>> name `first` to make it clear there is no implied ordering.
>>
>> The use case for this is often while working in IEx. I have a collection 
>> of _somethings_ and I want to see what one _something_looks like. I don't 
>> care about ordering.
>>
>> Rails' ActiveRecord has a method called `take` which does much the same 
>> thing - there is no implied ordering, it just grabs a member using some 
>> unspecified ordering and returns it.
>>
>> We already have `take/1` which returns the "first" X elements, so it 
>> seems logical to me to extend that to `take/0` which returns the "first" 
>> ONE element.
>>
>> On Thursday, April 20, 2017 at 5:55:22 PM UTC+1, Allen Madsen wrote:
>>>
>>> Also hd, which takes the head of the list.
>>>
>>> Allen Madsen
>>> http://www.allenmadsen.com
>>>
>>> On Thu, Apr 20, 2017 at 12:44 PM, OvermindDL1 <[email protected]> 
>>> wrote:
>>>
>>>> Two things:
>>>> 1. The `List` module already has a `List.first/1`.
>>>> 2. Not all enumerables have a concept of ordering, like a map, so I'm 
>>>> not sure an Enum version of such a thing makes conceptual sense?
>>>>
>>>> On Thursday, April 20, 2017 at 10:33:11 AM UTC-6, Sam Davies wrote:
>>>>>
>>>>> When working with collections it's often convenient to grab the first 
>>>>> element that comes to hand. I find myself writing this a lot:
>>>>>
>>>>> `Enum.take(collection, 1)` or `Enum.at(collection, 0)`
>>>>>
>>>>> How about a function `Enum.take/1` which takes only the collection and 
>>>>> returns the "first" value (I avoid naming it `Enum.first/1` since some 
>>>>> collections may not have any concept of ordering).
>>>>>
>>>> -- 
>>>> 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/69a0953e-07b3-4cc6-8cc0-bee718337ea5%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/elixir-lang-core/69a0953e-07b3-4cc6-8cc0-bee718337ea5%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/bd395d6b-e64d-41ef-970e-8ac33c0e279c%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/elixir-lang-core/bd395d6b-e64d-41ef-970e-8ac33c0e279c%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/38f7487e-8f00-4807-a524-2643a8cfb6a8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to