<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I think this might be what you are looking for:<div class=""><br class=""></div><div class="">append(Key, Value, Map) -></div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>maps:update_with(Key, fun(Tail) -> [Value | Tail] end, [], Map).<br class=""><div class="">
<div style="color: rgb(0, 0, 0); font-family: 'Trebuchet MS'; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><span id="docs-internal-guid-e691a4cc-056a-0210-b8b7-ea8d87d888ad" class=""><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;" class=""><br class="Apple-interchange-newline"><hr class=""></span></span><div class=""><b class=""><i class=""><a href="http://about.me/elbrujohalcon" class="">Brujo Benavides</a></i></b></div></div></div><div style="color: rgb(0, 0, 0); font-family: 'Trebuchet MS'; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><b class=""><br class=""></b></div><br class="Apple-interchange-newline">
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Aug 29, 2017, at 15:19, Dmitry Kolesnikov <<a href="mailto:dmkolesnikov@gmail.com" class="">dmkolesnikov@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hello,<br class=""><br class="">Premature optimisation is an evil ;-)<br class=""><br class="">I would use the following syntax:<br class="">```<br class="">append(Key, Value, Map) -><br class="">   List = case Map of<br class="">      #{Key := Tail} -> <br class="">         [Value | Tail];<br class="">      _ -><br class="">         [Value]<br class="">   end,<br class="">   Map#{Key => List}.<br class="">```<br class=""><br class="">Lists are not copied they are referenced. Maps… Hmm, I am not sure. I hope the implementation is smart enough to keep reference as well.<br class=""><br class="">- Dmitry<br class=""><br class=""><br class=""><blockquote type="cite" class="">On 29 Aug 2017, at 20.34, Caragea Silviu <<a href="mailto:silviu.cpp@gmail.com" class="">silviu.cpp@gmail.com</a>> wrote:<br class=""><br class="">Hello,<br class=""><br class="">Having a map where the value of each element it's a list :<br class=""><br class="">#{ 1 => [], 2 => [], ... n => []} <br class=""><br class="">and you need to append elements in the list for a specific key, what's the most optimal way to do this without copying the lists and the map inside the VM lot of times ?<br class=""><br class="">Anything better than the following solution:<br class=""><br class="">append_element(Key, Value, Map) -><br class="">    case maps:find(Key, Map) of<br class="">        {ok, V} -><br class="">            maps:put(Key, [Value | V], Map);<br class="">        _ -><br class="">            maps:put(Key, [Value], Map)<br class="">    end.<br class=""><br class="">Kind regards,<br class="">Silviu<br class="">_______________________________________________<br class="">erlang-questions mailing list<br class=""><a href="mailto:erlang-questions@erlang.org" class="">erlang-questions@erlang.org</a><br class="">http://erlang.org/mailman/listinfo/erlang-questions<br class=""></blockquote><br class="">_______________________________________________<br class="">erlang-questions mailing list<br class=""><a href="mailto:erlang-questions@erlang.org" class="">erlang-questions@erlang.org</a><br class="">http://erlang.org/mailman/listinfo/erlang-questions<br class=""></div></div></blockquote></div><br class=""></div></body></html>