[erlang-questions] Can we change the semantics of matchexpressions in comprehensions?

Paulo Sérgio Almeida psa@REDACTED
Mon Feb 4 22:44:34 CET 2008

Matthew Dempsky wrote:
> It occurs to me now that I can just rewrite "Pat = Expr" as "Pat <-
> [Expr]" without needing to change semantics at all.  I think it might
> still be worth investigating changes along those I described, but I
> withdraw my advocacy for them for the time being.

I also happened to want such a feature and then discovered this 
work-around. However, even if it is not strictly needed, it would make 
the code clearer. I started using the hack quite frequently, and 
sometimes it is not pleasant reading the code.

   IndexEnv = [{Var, Val} ||
               Var <- IndexVars,
               {value, {_, Val}} <- [lists:keysearch(Var, 1, Env)]],

is not so bad, but it gets worse when Expr returns itself a list, e.g.

       PosVars = lists:umerge([lists:sort(Vars) ||
                                 PVVL <- PVVLs,
                                 Vars <- [[Var || {Var, _} <- PVVL]]]),


More information about the erlang-questions mailing list