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.
