Comment below:
On Mon, Sep 26, 2011 at 1:42 PM, Eric Merritt <[email protected]>wrote:
> ---
> src/ec_lists.erl | 91
> ++++++++++++++++++++++++++++++++++++++++++++++++-----
> 1 files changed, 82 insertions(+), 9 deletions(-)
>
> diff --git a/src/ec_lists.erl b/src/ec_lists.erl
> index 6f76dcc..b80b700 100644
> --- a/src/ec_lists.erl
> +++ b/src/ec_lists.erl
> @@ -9,12 +9,31 @@
>
> %% API
> -export([find/2,
> - fetch/2]).
> + fetch/2,
> + search/2]).
>
> %%%===================================================================
> %%% API
> %%%===================================================================
>
> +%% @doc Search each value in the list with the specified
> +%% function. When the function returns a value of {ok, term()} the
> +%% search function stops and returns a tuple of {ok, term(), term()},
> +%% where the second value is the term returned from the function and
> +%% the third value is the element passed to the function. The purpose
> +%% of this is to allow a list to be searched where some internal state
> +%% is important while the input element is not.
> +-spec search(fun(), list()) -> {ok, Result::term(), Element::term()}.
> +search(Fun, [H|T]) ->
> + case Fun(H) of
> + {ok, Value} ->
> + {ok, Value, H};
> + not_found ->
> + search(Fun, T)
> + end;
> +search(_, []) ->
> + not_found.
>
I think this implementation is incorrect from the description. I'd argue,
given the documentation above, someone could realistically think that this
function would be valid for a function and an empty list. While I can't
think of a good example, I don't know why we need to pattern match on the
blank list and assume it is not_found. Could be looking for a blank list for
all we know.
At the very least, we need to specify in the docs a search on a blank list
is always not_found.
Thanks!
JW
--
You received this message because you are subscribed to the Google Groups
"erlware-dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/erlware-dev?hl=en.