implementation of suffix
Robert Virding
robert.virding@REDACTED
Sun Jun 5 11:31:45 CEST 2005
I would say a bug, but in which clause is debatable.
Robert
Ulf Wiger (AL/EAB) wrote:
>The implementation of lists:suffix/2 is as follows:
>
>
>suffix(Suffix, Suffix) -> true;
>suffix(Suffix, [_|Tail]) ->
> suffix(Suffix, Tail);
>suffix(_, []) -> false.
>
>
>The programming style in lists.erl seems to be to be very conservative
>about using type guards. One objection to this could be that it makes
>it more difficult for Dialyzer to derive good type information from one of
>the most frequently used modules, but in the case of suffix/2, I would
>say that it also violates the Principle of Least Astonishment:
>
>(n@REDACTED)13> lists:suffix(a,[1,2,3|a]).
>true
>(n@REDACTED)14> lists:suffix(b,[1,2,3|a]).
>** exited: {function_clause,[{lists,suffix,[b,a]},
> {erl_eval,do_apply,5},
> {shell,exprs,6},
> {shell,eval_loop,3}]} **
>
>=ERROR REPORT==== 27-May-2005::15:36:23 ===
>Error in process <0.95.0> on node 'n@REDACTED' with exit value: {function_clause,[{lists,suffix,[b,a]},{erl_eval,do_apply,5},{shell,exprs,6},{shell,eval_loop,3}]}
>
>
>Bug or feature?
>
>/Uffe
>
>
>
More information about the erlang-questions
mailing list