length() in guards
Richard A. O'Keefe
ok@REDACTED
Tue Sep 30 05:53:28 CEST 2003
Raimo Niskanen <raimo@REDACTED> wrote:
We have already thought of a possible optimization in the
compiler to convert such as "length(L) > 3" to an internal
"length_gt(L, 3)", but it was not possible without changing the
semantics of length(L).
Oh *curse*, that's right. Worse still, on examining the latest sources,
I see that there _are_ cases when length/1 is used to test whether something
is a proper list or not. What a nuisance.
The observation remains:
- *most* of the uses of length/1 in guards could use a bounded-time
test because they are known to be given lists;
- *most* of the rest could be rewritten with an improvement in both
speed and clarity.
A set of length_{lt,eq,gt,ge,ne,le}/2 guard tests, however spelled,
would be useful.
More information about the erlang-questions
mailing list