[erlang-questions] lists:mapfind?
Lukas Larsson
lukas@REDACTED
Mon Aug 21 18:18:56 CEST 2017
I agree with Richard that lists:first/2[1] is missing. Adding that
functions could solve part of the problem. maps:has/3 could also be useful,
though so far I've always found the same functionality to be easier to do
with syntax.
For me, adding lists:mapfind/3 and friends to the stdlib is a convenience
so that I don't end up writing the following in my projects:
%% Map helpers
mapsort(Key, Maps) ->
lists:sort(fun(#{ Key := V1 }, #{ Key := V2 }) ->
V1 < V2
end, Maps).
mapfind(Key, Value, List) ->
lists:find(fun(#{ Key := V } ) -> V == Value end, List).
If it is only me and Max that find that we keep re-implementing these
functions in various places, then I don't think that we should add special
functions for list of maps. However as maps are gradually replacing more
and more use-cases where before we used proplists or records, I think these
functions will be become increasingly useful. I could very well be wrong
though.
As for the naming of the functions, I don't have any great suggestions
about what they should be called or where they should be placed. I don't
find the lists module to be a very wrong place to put them (for the reason
Roger pointed out), the maps module also makes some sense, or possibly
adding a new module all together.
[1]: though I think it should be called lists:find/2 for consistency with
lists:keyfind/3 and to not be confused as the opposite of lists:last/1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170821/d5be1c98/attachment.htm>
More information about the erlang-questions
mailing list