> 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 > <javascript:>> wrote: > >> Derp, I knew that. Good point. >> >> On Tue, Jul 2, 2019 at 9:55 AM Michał Muskała <mic...@muskala.eu >> <javascript:>> 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 >>> <javascript:>>, 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 <javascript:>. >>> 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 <javascript:>. >>> 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 <javascript:>. >> 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. For more options, visit https://groups.google.com/d/optout.