[erlang-questions] Tried this... Thought it interesting... But it didn't work.
Richard A. O'Keefe
ok@REDACTED
Wed Sep 2 05:37:11 CEST 2015
On 2/09/2015, at 3:30 am, <lloyd@REDACTED> <lloyd@REDACTED> wrote:
> So, I ran across this tidbit in the Erlang cybersphere:
>
> List Comprehension without generators
>
> http://blog.equanimity.nl/blog/2015/03/15/erlang-one-weird-trick-goodiebag/
>
> 1> Y = 3.
> 3
> 2> Z = [X || Y > 2].
> * 1: variable 'X' is unbound
Why did you think that would work? What did you expect it to be?
1> Y = 3, A = [a || Y < 2], B = [b || Y > 2], {A,B}.
{[],[b]}
Perhaps more interesting:
2> [io:write(a) || Y < 2], [io:write(b) || Y > 2].
b[ok]
from which we see that io:write(a) was not called,
while io:write(b) was called.
3> Pid = spawn(fun () -> receive X -> io:write('OK') end end).
<0.38.0>
4> [Pid ! a || Y < 2].
[]
5> [Pid ! b || Y > 2].
'OK'[b]
And this, boys and girls, means that Erlang has a
one-armed 'if <general expression> then <expression>'
statement. All those years I've been saying "we don't
need no stinking COND" and we already had one...
More information about the erlang-questions
mailing list