This has been covered extensively in a number of places, the most 
definitive being 
here: https://github.com/elixir-lang/elixir/blob/v1.3/CHANGELOG.md

On Thursday, July 14, 2016 at 11:23:16 AM UTC-4, Fiorillo Nicola wrote:
>
> Behaviour was clear to me (and logic).
> My doubt is: why elixir force me to put a "useless" else clause and 
> lowering readability?
>
> On Thursday, July 14, 2016 at 5:17:10 PM UTC+2, Ben Wilson wrote:
>>
>> The compiler suggests you re-write it as
>>
>> list = [:one]
>>
>> list = if false do
>>   [:two | list]
>> else
>>   list
>> end
>>
>> In your case you have no `else` clause, so if the `if` clause fails, it 
>> returns nil, which sets `list` to nil.
>>
>> On Thursday, July 14, 2016 at 10:46:00 AM UTC-4, Fiorillo Nicola wrote:
>>>
>>> Sorry about the object: macro have not meaning in this post.
>>>
>>> On Thursday, July 14, 2016 at 4:44:36 PM UTC+2, Fiorillo Nicola wrote:
>>>>
>>>> Hi all,
>>>> I have a elixir/phoenix project in production written in 1.2.x elixir 
>>>> version.
>>>> I'm migrating to 1.3.1 and some "unsafe variable" warning appear: most 
>>>> of them were real and useful but I cannot understand the following 
>>>> situation:
>>>>
>>>> #!/usr/bin/env elixir
>>>> list = [:one]
>>>>
>>>> if false do
>>>>   list = [:two | list]
>>>> end
>>>>
>>>> IO.inspect list    # warning occurs
>>>>
>>>> If, as warning comment suggests, I write
>>>>
>>>> #!/usr/bin/env elixir
>>>> list = [:one]
>>>>
>>>> *list =*
>>>> *  if false do*
>>>> *    list = [:two | list]*
>>>> *  end*
>>>>
>>>> IO.inspect list
>>>>
>>>> # here list is nil
>>>>
>>>> list variable assumes an incorrect value.
>>>>
>>>> Question is: why elixir compiler assume that block must return a value?
>>>>
>>>> Thanks,
>>>> Nicola
>>>>
>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-talk" 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-talk/90ed00f1-9a54-48bc-bd80-099aeac5596a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to