[erlang-questions] erlang *****

Andras Georgy Bekes bekesa@REDACTED
Mon Mar 17 16:02:31 CET 2008


> But now consider 
>
> 	f({X,_}\/{_,X},
> 	  {Y,X}\/{X,Y},
> 	  ...
> 	  {Z,W}\/{W,Z}
> 	)
So matching this pattern must involve backtracking. Awww.

> You could hack around this by requiring that if a head variable is
> bound in a disjunctive pattern it is not matched by any other head
> pattern.
The problem does exist in a single pattern:
         {{X,_}\/{_,X},
 	  {Y,X}\/{X,Y},
 	  ...
 	  {Z,W}\/{W,Z}}

We could of course generalise the above restriction, but it doesn't make 
it tolerable.

But what are the real problems with the search for the right match with 
backtracking? If the programmer has written that silly pattern, he/she 
should be aware that it might not be very fast. Are there consequences 
other than the match being slow?

> I note that my abstract pattern proposal *already* gives you
> disjunctive patterns, BUT in such a way that the disjunctions can't
> interact like this.
Could you give some reference?
I've searched for "abstract pattern" in the archives and found a few 
mail, but not your paper.

	Georgy



More information about the erlang-questions mailing list