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 <christheke...@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 <christheke...@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-lang-core+unsubscr...@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-lang-core+unsubscr...@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-lang-core+unsubscr...@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/CAGnRm4J1RBxnv%3DY_souiLJJcmMnNPtOCTBgOA8y0qBK7a5%2BO%3DQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to