Since the output of the `Enum.each`, `for`, and `Enum.map` is effectively
ignored because only the entries in the  defs_table (
https://github.com/elixir-lang/elixir/blob/master/lib/elixir/src/elixir_def.erl#L207)
matter, is there a performance benefit to replacing any `for` or `Enum.map`
around `def` with `Enum.each` so the compilation doesn't spend the time and
memory creating a list that'll just be throw away?

On Sun, Oct 30, 2016 at 2:13 AM, José Valim <[email protected]
> wrote:

> Def, like defmodule, module attributes and friends, is a side-effect. It
> stores information in the module table. Returned quoted expressions
> wouldn't quite work because we would need to collect them until the end.
> Check the expanded code and it may clarify things a bit.
>
> On Sunday, October 30, 2016, Luke Imhoff <[email protected]> wrote:
>
>> I had thought that `def` returned (the equivalent [because it's really in
>> elixir_bootstrap.erl] of a) quoted block and in order for a `def` to count
>> in a loop, you'd need either a `for` comprehension, or `Enum.map`, so that
>> the `quote` from each `def` is concatenated together to be merged into the
>> caller's quoted form, but [Postgrex.Message.decode_auth_type/1 uses
>> Enum.each](https://github.com/elixir-ecto/postgrex/blame/mas
>> ter/lib/postgrex/messages.ex#L370-L372).  How are all the `def`s inside
>> the `Enum.each` being preserved when `Enum.each` doesn't return the value
>> of each function call? This is related to https://github.com/KronicDe
>> th/intellij-elixir/issues/472.
>>
>> --
>> 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/ms
>> gid/elixir-lang-core/a768af02-fdc1-45be-ad69-e0661f79139b%
>> 40googlegroups.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/a768af02-fdc1-45be-ad69-e0661f79139b%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> --
>
>
> *José Valim*
> www.plataformatec.com.br
> Skype: jv.ptec
> Founder and Director of R&D
>
> --
> 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/rbAlgKeavJU/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/CAGnRm4KW5Pn6%2Byzvz-9gSx6OCepwscj3WT5JO9RB%2Bo%
> 2B4%2BcFG-g%40mail.gmail.com
> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4KW5Pn6%2Byzvz-9gSx6OCepwscj3WT5JO9RB%2Bo%2B4%2BcFG-g%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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAFmZThqhMA_5xJc%3DiTjuB4CDWzXE5PUF5%2BeQZ6WuKAvw4BFj3w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to