<div dir="ltr">Since maps are still marked are experimental, I would love if we take the opportunity to improve the errors coming from map operations.<div><br></div><div>For example, a bad update just fails with badarg, without giving further hints of what went wrong:</div><div><br></div><div><div><font face="monospace, monospace">1> (foo)#{foo := 1}.</font></div><div><font face="monospace, monospace">** exception error: bad argument: foo</font></div><div><br></div></div><div>Or when the key does not exist:</div><div><br></div><div><div><font face="monospace, monospace">1> (#{})#{foo := 1}.</font></div><div><font face="monospace, monospace">** exception error: bad argument</font></div><div><font face="monospace, monospace">     in function  maps:update/3</font></div><div><div class="gmail_signature"><div><br></div><div>Although the shell helps a bit with formatting it, it is hard to decipher in logs and we frequently have reports of the error message not being clear to developers.</div><div><br></div><div>I would love if we could, at least for the syntax based operations, introduce two errors:</div><div><br></div><div>1. {badmap, Term} - raised when a map was expected but got something else (this would replace the first error and it is an improvement over the error records used to raise)</div><div><br></div><div>2. {badkey, Key, Map} - raised when we expected a Map to have Key but it does not. Useful for the := syntax and it could also be used if we ever add an access operation to maps</div><div><br></div><div>If we segregate the errors as proposed, we will have plenty of opportunity to improve the reports in shell and in error loggers.</div><div><br></div><div>Thoughts?</div><div><br></div><div><span style="font-size:13px"><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><b>José Valim</b></span></div><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><div><span style="font-family:verdana,sans-serif;font-size:x-small"><a href="http://www.plataformatec.com.br/" style="color:rgb(42,93,176)" target="_blank">www.plataformatec.com.br</a></span></div><div><span style="font-family:verdana,sans-serif;font-size:x-small">Skype: jv.ptec</span></div><div><span style="font-family:verdana,sans-serif;font-size:x-small">Founder and Lead Developer</span></div></span></div></span></div></div></div>
</div></div>