list comprehension bug ?

Håkan Stenholm hakan.stenholm@REDACTED
Thu Jul 10 22:10:34 CEST 2003

I encountered a odd list comprehension bug (R9B-0, MacOS X 10.2.6):

[Pos || map_get(Map,Pos), Pos <- Neighbours].

results in a "variable 'Pos' is unbound" compile error, but changing 
the order of the generator and predicate makes the compile error go 

[Pos || Pos <- Neighbours, map_get(Map,Pos) ].

NOTE - the full function looks like this:

%% return {X,Y} pos list (of neighboring hexes) for currently selected 
neighbours(Map, {X, Y}) ->

     Neighbours = case even(X) of
                      false -> [{X,Y+1}, {X,Y-1}, {X+1,Y-1}, {X+1,Y}, 
{X-1,Y-1}, {X-1,Y} ];
                      true -> [{X,Y+1}, {X,Y-1}, {X+1,Y+1}, {X+1,Y}, 
{X-1,Y+1}, {X-1,Y} ]
     %% --> variable 'Pos' is unbound
     %% [Pos || map_get(Map,Pos), Pos <- Neighbours].

     [Pos || Pos <- Neighbours, map_get(Map,Pos) ].

More information about the erlang-questions mailing list