In the with proposal we explain that "with" was meant to mirror
for-comprehensions. It has been also discussed that nowhere in Elixir we
traverse the body retrieving expressions and that's not a precedent we want
to introduce in the core language itself.



*José Valimwww.plataformatec.com.br
<http://www.plataformatec.com.br/>Founder and Director of R&D*

On Tue, Jan 30, 2018 at 4:08 PM, OvermindDL1 <[email protected]> wrote:

> I'm still quite curious why `with` is not entirely in the body like `cond`
> and `case` and so forth is (ditto with `for`), so it'd be:
>
> ```elixir
> with do
>   %{x: x} <- y
>   x
> end
> ```
>
> It follows the pattern of cond and so forth, no weird comma's needed, no
> weird prefix `do:` or so forth, you only need to split on `<-`, etc....
>
>
> On Tuesday, January 30, 2018 at 5:55:58 AM UTC-7, José Valim wrote:
>>
>> Good call Ben! The formatter will rewrite it though, while it does keep
>> parens.
>>
>>
>>
>> *José Valimwww.plataformatec.com.br
>> <http://www.plataformatec.com.br/>Founder and Director of R&D*
>>
>> On Tue, Jan 30, 2018 at 1:46 PM, Ben Wilson <[email protected]> wrote:
>>
>>> This is achievable with `\` btw:
>>>
>>> with \
>>>   %{x: x} <- y
>>> do
>>>   x
>>> end
>>>
>>>
>>> On Tuesday, January 30, 2018 at 7:39:07 AM UTC-5, Po Chen wrote:
>>>>
>>>> Ah I thought `with` was part of the language, then I realized how small
>>>> the language core is.
>>>> Now I wish the language is actually a little bigger :S mixed feelings.
>>>>
>>>> Thanks for the reply!
>>>>
>>>> On Tuesday, 30 January 2018 23:20:49 UTC+11, José Valim wrote:
>>>>>
>>>>> Imagine you have this code:
>>>>>
>>>>>    foo = 1
>>>>>    bar = 2
>>>>>    foo bar do
>>>>>      :ok
>>>>>    end
>>>>>
>>>>> Would you expect it to be equivalent to:
>>>>>
>>>>>    foo = 1
>>>>>    bar = 2
>>>>>    foo
>>>>>    bar do
>>>>>      :ok
>>>>>    end
>>>>>
>>>>> It isn’t because “foo” in its own line is a valid expression. Replace
>>>>> “foo” by “with” and you can see why your proposed syntax doesn’t work.
>>>>>
>>>>> If you want to write it as you proposed, you need to use parens:
>>>>>
>>>>>    foo = 1
>>>>>    bar = 2
>>>>>    foo(
>>>>>      bar
>>>>>    ) do
>>>>>      :ok
>>>>>    end
>>>>> --
>>>>>
>>>>>
>>>>> *José Valimwww.plataformatec.com.br
>>>>> <http://www.plataformatec.com.br/>Founder and Director of R&D*
>>>>>
>>>> --
>>> 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/a644c670-f090-4eaf-a0df-fa47333519b8%
>>> 40googlegroups.com
>>> <https://groups.google.com/d/msgid/elixir-lang-core/a644c670-f090-4eaf-a0df-fa47333519b8%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 [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/elixir-lang-core/bbf54f61-ffc4-46e3-b69f-
> 5bbc03f0df70%40googlegroups.com
> <https://groups.google.com/d/msgid/elixir-lang-core/bbf54f61-ffc4-46e3-b69f-5bbc03f0df70%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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2BJ-1nx3Fw0_43iK%2BHVgBXGcmHjUq5g1-SAAEDc%2BY1TEg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to