[erlang-questions] Tried this... Thought it interesting... But it didn't work.
Tue Sep 1 18:43:31 CEST 2015
On 2015年9月1日 火曜日 11:30:31 lloyd@REDACTED wrote:
> So, I ran across this tidbit in the Erlang cybersphere:
> List Comprehension without generators
> 1> Y = 3.
> 2> Z = [X || Y > 2].
> * 1: variable 'X' is unbound
> OK.So I tried...
> test(Y) ->
> [ X || Y > 2].
> >3 test:test().
> Error: variable 'X' is unbound
> Waah...is someone pulling my leg?
> This worked...
> 4> Z = [X || X <- [Y >2]].
> But it seems rather pointless.
Hi there, Lloyd!
This is a shortcut. It is just using the test in the list comprehension to determine whether a list of one element or an empty list is returned. Both X and Y must already be defined in the scope of the expression:
1> X = 1.
2> Y = 2.
3> Z = [X || Y > 2].
4> Q = [X || Y > 1].
Honestly, I don't really think this is the best use of list comprehension syntax. I can easily imagine people being confused at that, or at least requiring a few moments thought to figure out wtf is going on in that line. The fact this confounded you (and the example was unclear in the blog post, imo) is a good reason why you shouldn't do this in your code.
More information about the erlang-questions