dialyzer and non-proper lists

Kostis Sagonas <>
Fri Sep 16 13:26:20 CEST 2005

Ulf Wiger wrote:
 > It's been argued that non-proper lists can always be 
 > avoided at minimal expense.
 > How about this example:
 > ...
 > 21> ets:select(T, [{{"foo" ++ '_'},[],['$_']}]).
 > ...
 > Never mind the ++. It expands before the select() call into
 > [$f, $o, $o | '_'], which is still a non-proper list, and the way
 > you're supposed to do it in ets:match() and ets:select()

>From the little I understand this example, apologies if I have totally
misunderstood this, I would say that this has nothing to do with
improper lists, but with (arguably brain-damaged design decisions) to:

 1. Have match specifications described as lists, and

 2. Being unable to have general selectors such as

	lists:prefix("foo", '$1')

    in the guard list (i.e., in the [] in Ulf's example above),
    which arguably are more natural.  Btw, is there any really good
    reason why the so called GuardList has to be restricted to
    Erlang guards?


More information about the erlang-questions mailing list