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.

Reply via email to