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 <allen.c.mad...@gmail.com> 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 <he...@ryanwinchester.ca> > 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 (w...@resilia.nl) >> 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 >> <https://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:id> >> C++: std::identity >> <https://en.cppreference.com/w/cpp/utility/functional/identity> >> Rust: std::convert::identity >> <https://doc.rust-lang.org/nightly/std/convert/fn.identity.html> >> Clojure: identity <https://clojuredocs.org/clojure.core/identity> >> Ruby: Object#itself >> <https://ruby-doc.org/core-2.6.3/Object.html#method-i-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 >> <https://bugs.ruby-lang.org/issues/6373>, however) >> Racket (and some other Lisps): identity >> <https://docs.racket-lang.org/reference/procedures.html?q=identity#%28def._%28%28lib._racket%2Ffunction..rkt%29._identity%29%29> >> 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 <christ...@gmail.com> >>> wrote: >>> >>>> Derp, I knew that. Good point. >>>> >>>> On Tue, Jul 2, 2019 at 9:55 AM Michał Muskała <mic...@muskala.eu> >>>> 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: 1def 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 <christ...@gmail.com>, >>>>> 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 elixir-l...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/elixir-lang-core/fffd5b76-4385-40de-93bd-148f1b94bb27%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/elixir-lang-core/fffd5b76-4385-40de-93bd-148f1b94bb27%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 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 >>>>> elixir-l...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/elixir-lang-core/b2149582-b8ba-4759-99ac-a634f73f3243%40Spark >>>>> <https://groups.google.com/d/msgid/elixir-lang-core/b2149582-b8ba-4759-99ac-a634f73f3243%40Spark?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 elixir-l...@googlegroups.com. >>>> 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 >>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAD9kT2R41gmZXU9_YAqAdyJQDP-M37j-mgUet-okoeBzF%3DdMDA%40mail.gmail.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 elixir-lang-core+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elixir-lang-core/458469ec-ac00-4155-b8f0-717e6623f820%40googlegroups.com >> <https://groups.google.com/d/msgid/elixir-lang-core/458469ec-ac00-4155-b8f0-717e6623f820%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 elixir-lang-core+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elixir-lang-core/CAKBKqKQRVE1wPbfqPVSsuiR7oBUiRTAKLqojmUtZ6-G94VohPg%40mail.gmail.com >> <https://groups.google.com/d/msgid/elixir-lang-core/CAKBKqKQRVE1wPbfqPVSsuiR7oBUiRTAKLqojmUtZ6-G94VohPg%40mail.gmail.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 elixir-lang-core+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/CAK-y3CtUqEy84xBwaU942exgh0y0JKq3F9XQ__BcJRyMo0Q2Qw%40mail.gmail.com > <https://groups.google.com/d/msgid/elixir-lang-core/CAK-y3CtUqEy84xBwaU942exgh0y0JKq3F9XQ__BcJRyMo0Q2Qw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Regards, Bruce Tate CEO <https://bowtie.mailbutler.io/tracking/hit/f8218219-d2a8-4de4-9fef-1cdde6e723f6/c7c97460-016e-45fb-a4ab-0a70318c7b97> Groxio, LLC. 512.799.9366 br...@grox.io 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 elixir-lang-core+unsubscr...@googlegroups.com. 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.