Live data from Hacker News

Guards Guards – small gotcha in Elixir guard expressions

hauleth.dev

1–4 of 4 posts

Re: Guards Guards – small gotcha in Elixir guard expressions

#2
Elixir does not short-circuit its if-then either:

  if false or true do
    IO.puts("did not short-circuit (?)")
  end
Maybe because `if' is a macro, the whole expression is sent in for evaluation:

https://elixir-lang.readthedocs.io/en/latest/intro/5.html#if...

Re: Guards Guards – small gotcha in Elixir guard expressions

#3

Elixir does not short-circuit its if-then either: if false or true do IO.puts("did not short-circuit (?)") end Maybe because `if' is a macro, the whole expression is sent in for evaluation: https://elixir-lang.readthedocs.io/en/latest/intro/5.html#if...

What do you mean there? What is not short-circuited there?

Re: Guards Guards – small gotcha in Elixir guard expressions

#4
post #3

Elixir does not short-circuit its if-then either: if false or true do IO.puts("did not short-circuit (?)") end Maybe because `if' is a macro, the whole expression is sent in for evaluation: https://elixir-lang.readthedocs.io/en/latest/intro/5.html#if...

What do you mean there? What is not short-circuited there?

The whole thing `false or true' is sent in for evaluation, so if there is a side-effect function that returns `true', it is executed too. Because Elixir treats it as a macro and not short-circuit.