[erlang-questions] How to return first {Key, Value} from Map where Predicate is true

Robert Wilkinson bob@REDACTED
Thu Jan 8 11:21:07 CET 2015


On Wed, Jan 07, 2015 at 07:56:01PM -0800, Harit Himanshu wrote:
> The more formal definition of problem is
> 
> Write a function map_search_pred(Map, Pred) that returns the first element
> {Key,Value} in the map for which Pred(Key, Value) is true.

SNIP

> *Problem?*
> The problem is efficiency.
> It uses list comprehension and runs for all the elements in the list. The
> better solution would be to return after the first match.
> 
> As a beginner to language, I do not know a better idiomatic way to solve
> this, so looking for better ideas and suggestions
> 
> Thank you

Hello Harit

I have some problem with your intent. A map is not ordered (afaik -
or it will/may be implementation dependent) and so the concept of
*first* is misguided? (it may depend on external factors)

Maybe the function should return when *any* key/value pair 
satisfies the predicate.

Sorry if I am being over pedantic!

Bob



More information about the erlang-questions mailing list