I’m in favor of the addition overall. The specific function name matters less 
to me, &identity/1 or &id/1 would be fine.

> On Jul 2, 2019, at 16:02, Bruce Tate <[email protected]> wrote:
> 
> I could learn to like &id/1, and also think that &ident/1 fits Elixir's style 
> of abbreviation. My vote is for either one of those. 
> 
> -bt
> 
>> On Tue, Jul 2, 2019 at 4:47 PM Allen Madsen <[email protected]> wrote:
>> And identity in mathematics: https://en.wikipedia.org/wiki/Identity_function
>> 
>> Allen Madsen
>> http://www.allenmadsen.com
>> 
>> 
>>> On Tue, Jul 2, 2019 at 4:05 PM Ryan Winchester <[email protected]> 
>>> wrote:
>>> And `identity` in Scala
>>> 
>>> docs: 
>>> https://www.scala-lang.org/api/current/scala/Predef$.html#identity[A](x:A):A
>>> 
>>> 
>>> interesting read: 
>>> https://emilvarga.com/posts/2016/08/01/using-identity-functions
>>> 
>>>> On July 2, 2019 at 1:00:53 PM, Wiebe-Marten Wijnja ([email protected]) wrote:
>>>> 
>>>> >  Anyway, to move the discussion forward, can someone do a more complete 
>>>> > survey on what this function are called in many of the other languages? 
>>>> > I just want to make sure we do our due diligence before adding it to the 
>>>> > language.
>>>> 
>>>> Haskell: id
>>>> C++: std::identity
>>>> Rust: std::convert::identity
>>>> Clojure: identity
>>>> Ruby: Object#itself (although this is a bound method that returns the 
>>>> receiver rather than an unbound function taking one parameter that returns 
>>>> it unchanged. It is the closest thing we have built-in in Ruby, however)
>>>> Racket (and some other Lisps): identity
>>>> Python: no built-in named identity function.
>>>> JS: no built-in named identity function.
>>>> PHP: no built-in named identity function.
>>>> Kotlin: no built-in named identity function.
>>>> 
>>>> 
>>>> 
>>>>> On Tuesday, July 2, 2019 at 8:40:45 PM UTC+2, José Valim wrote:
>>>>> Thanks Chris, it is important that someone being counter arguments, even 
>>>>> if they can be disproved. :)
>>>>> 
>>>>> I definitely see how such a small function can be useful but, at the same 
>>>>> time, I am not convinced about the name "identity".
>>>>> 
>>>>> I found it curious that Clojure actually have an identity function 
>>>>> because the definition of Identity they use when talking about values and 
>>>>> change is a more complex one (and one that really stuck with me):
>>>>> 
>>>>> > By identity I mean a stable logical entity associated with a series of 
>>>>> > different values over time
>>>>> 
>>>>> https://clojure.org/about/state#_working_models_and_identity
>>>>> 
>>>>> Of course, my interpretation above is likely uncommon and there are other 
>>>>> interpretations of identity that would fit nicely.
>>>>> 
>>>>> Anyway, to move the discussion forward, can someone do a more complete 
>>>>> survey on what this function are called in many of the other languages? I 
>>>>> just want to make sure we do our due diligence before adding it to the 
>>>>> language.
>>>>> 
>>>>> Thank you,
>>>>> 
>>>>> José Valim
>>>>> www.plataformatec.com.br
>>>>> Skype: jv.ptec
>>>>> Founder and Director of R&D
>>>>> 
>>>>> 
>>>>>> On Tue, Jul 2, 2019 at 8:25 PM Christopher Keele <[email protected]> 
>>>>>> wrote:
>>>>>> Derp, I knew that. Good point.
>>>>>> 
>>>>>>> On Tue, Jul 2, 2019 at 9:55 AM Michał Muskała <[email protected]> wrote:
>>>>>>> Because Elixir is a lisp-2 language, variables and functions are in 
>>>>>>> different "namespaces". This means you can have local variables with 
>>>>>>> names of local functions without any issues, but it also means you need 
>>>>>>> different syntax when you want to call a function contained in a 
>>>>>>> variable. Or formulated differently - variables can't shadow functions. 
>>>>>>> For example, consider:
>>>>>>> bar = &foo/0
>>>>>>> bar.() #=> 1
>>>>>>> bar() #=> 2
>>>>>>> 
>>>>>>> def foo(), do: 1
>>>>>>> def bar(), do: 2
>>>>>>> Having a Kernel.id/1 function would not preclude you from using 
>>>>>>> variables called id.
>>>>>>> 
>>>>>>> Michał.
>>>>>>>> On 2 Jul 2019, 18:41 +0200, Christopher Keele <[email protected]>, 
>>>>>>>> wrote:
>>>>>>>> I'd cast my vote against this. The proposal seems to be:
>>>>>>>> 
>>>>>>>> 1. Create a function named 'id' or some such
>>>>>>>> 2. Put it in the Kernel namespace (so it need not be prefixed)
>>>>>>>> 
>>>>>>>> I've been doing a lot of python lately and they have a lot of things 
>>>>>>>> like this, including the same 'filter' global function mentioned in 
>>>>>>>> this thread.
>>>>>>>> 
>>>>>>>> Points against:
>>>>>>>> 
>>>>>>>> 1. It'd suck to not be able to use 'id' as a variable name, and would 
>>>>>>>> conflict with a lot of existing code.
>>>>>>>> 2. Alternative names to 'id' or namespacing it are not shorter than 
>>>>>>>> '&(&1)'
>>>>>>>> 3. '&(&1)' is more open to change with requirements
>>>>>>>> 4. Adopting 'id' within Kernel would encourage adding more utility 
>>>>>>>> functions to it, exacerbating 1, like the proposed 'filter' function
>>>>>>>> 5. Not adopting it within the Kernel would be hard, as there's no real 
>>>>>>>> appropriate place for it elsewhere in standard lib, unlike Enum's 
>>>>>>>> 'filter'
>>>>>>>> 
>>>>>>>> Generally it's a nice idea, but I can't think of a great way to make 
>>>>>>>> it work, and it'd open the floodgates to more utility functions that 
>>>>>>>> I've come to find grating in day-to-day python development.
>>>>>>>> 
>>>>>>>> Just my two cents,
>>>>>>>> Chris K
>>>>>>>> --
>>>>>>>> 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/fffd5b76-4385-40de-93bd-148f1b94bb27%40googlegroups.com.
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>> --
>>>>>>> You received this message because you are subscribed to a topic in the 
>>>>>>> Google Groups "elixir-lang-core" group.
>>>>>>> To unsubscribe from this topic, visit 
>>>>>>> https://groups.google.com/d/topic/elixir-lang-core/tB61BHYIH1s/unsubscribe.
>>>>>>> To unsubscribe from this group and all its topics, send an email to 
>>>>>>> [email protected].
>>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msgid/elixir-lang-core/b2149582-b8ba-4759-99ac-a634f73f3243%40Spark.
>>>>>>> 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/CAD9kT2R41gmZXU9_YAqAdyJQDP-M37j-mgUet-okoeBzF%3DdMDA%40mail.gmail.com.
>>>>>> 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/458469ec-ac00-4155-b8f0-717e6623f820%40googlegroups.com.
>>>> 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/CAKBKqKQRVE1wPbfqPVSsuiR7oBUiRTAKLqojmUtZ6-G94VohPg%40mail.gmail.com.
>>> 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/CAK-y3CtUqEy84xBwaU942exgh0y0JKq3F9XQ__BcJRyMo0Q2Qw%40mail.gmail.com.
>> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> 
> Regards,
> Bruce Tate
> CEO
> 
> 
> 
> Groxio, LLC.
> 512.799.9366
> [email protected]
> grox.io
> -- 
> 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/CAFXvW-7%3DfZ2r0a8Urxvg%2B5yHee0gmXZ%3DVVMTuNo05gSOgwkf%2Bg%40mail.gmail.com.
> 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/FF82A16B-36F3-49AB-8138-98CE1026AD43%40sorentwo.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to