<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
Allow me to elaborate on your point Michael (also without getting philosophical).
<div class=""><br class="">
</div>
<div class="">In JavaScript <font face="Menlo" class="">null</font> and <font face="Menlo" class="">undefined</font> are identifiably distinct datatypes that serve specific purposes:
<div class=""><br class="">
</div>
<div class="">
<ul class="MailOutline">
<li class=""><b class="">null</b> - This variable specifically has no value</li><li class=""><b class="">undefined</b> - The value of this variable is indeterminate (I.E. identifiably different from
<font face="Menlo" class="">null</font>)</li></ul>
<div class=""><br class="">
</div>
</div>
<div class="">Although the atom <font face="Menlo" class="">null</font> has no special meaning in Erlang, it does when mapped to JavaScript <span style="font-family: Menlo;" class="">null</span>; therefore to maintain accuracy, Erlang devs who also work in
 JavaScript should understand and preserve this semantic difference.  Likewise with Erlang <span style="font-family: Menlo;" class="">undefined</span> mapping to JavaScript <span style="font-family: Menlo;" class="">undefined</span>.</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">Therefore, I submit that this semantic difference should be persevered when mapping from Erlang to JavaScript, otherwise data loss will occur, particularly when mapping from JavaScript back to Erlang.</div>
</div>
<div class=""><br class="">
</div>
<div class=""><font face="Menlo" class="">Erlang    -> JavaScript</font></div>
<div class=""><font face="Menlo" class="">null      -> null</font></div>
<div class=""><font face="Menlo" class="">undefined -> undefined</font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">JavaScript -> Erlang</font></div>
<div class="">
<div class=""><font face="Menlo" class="">null       -> null</font></div>
<div class=""><font face="Menlo" class="">undefined  -> undefined</font></div>
</div>
<div class=""><br class="">
</div>
<div class="">This part of the mapping table at least should be bijective.</div>
<div class=""><br class="">
</div>
<div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div style="color: rgb(0, 0, 0); font-family: Tahoma; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" style="font-family: Helvetica; orphans: 2; widows: 2; border-collapse: collapse;">
<tbody class="">
<tr class="">
<td width="624" valign="top" style="width: 468pt; border-style: none none solid; border-bottom-width: 1pt; border-bottom-color: gray; padding: 1.4pt 0cm;" class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt;" class=""><b class=""><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class="">Chris Whealy</span></b><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class=""><o:p class=""></o:p></span></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt;" class="">
<p class="MsoNormal" style="font-family: Tahoma; font-size: 12px;"><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class="">SAP Cloud Platform | Strategy & Product Management | Team</span></p>
</div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt;" class=""><b class=""><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class="">SAP UK Ltd,</span></b><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class=""> Clockhouse
 Place, Bedfont Rd, Feltham, Middx, TW14 8HA, England <o:p class=""></o:p></span></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt;" class=""><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class=""><br class="">
M +44 (0)7808 575377</span><span style="color: rgb(102, 102, 102); font-family: Arial, sans-serif; font-size: 8pt;" class=""> </span></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt;" class="">
<p class="MsoNormal" style="font-family: Tahoma; font-size: 12px;"><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class="">Find out more on the Strategy & Product Management</span><span lang="EN-US" class=""><a href="https://wiki.wdf.sap.corp/wiki/pages/viewpage.action?pageId=1865737441" class=""><b class=""><span style="font-size: 8pt; font-family: Arial, sans-serif;" class=""> </span></b><b class=""><span style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(46, 116, 181);" class="">Wiki
 page</span></b></a></span><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class=""> (SAP internal)<br class="">
</span><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(102, 102, 102);" class="">Follow our latest activities in SAP CP User Community </span><span lang="EN-US" class=""><b class=""><span style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(46, 116, 181);" class=""><a href="https://jam4.sapjam.com/groups/about_page/eopqUq5S182gY7JFrbdwis" class="">Jam
 Group</a></span></b></span><span style="font-family: Arial, sans-serif; font-size: 8pt;" class=""> </span></p>
<p class="MsoNormal" style="font-family: Tahoma; font-size: 12px;"><span lang="EN-US" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(153, 153, 153);" class="">Please consider the impact on the environment before printing this e-mail. </span></p>
</div>
</div>
<div style="margin: 0cm 0cm 0.0001pt;" class=""><span lang="DE" style="font-family: Arial, sans-serif; font-size: 7.5pt; color: rgb(153, 153, 153);" class="">Twitter: @LogaRhythm</span></div>
</td>
</tr>
<tr class="">
<td width="624" valign="top" style="width: 468pt; border: none; padding: 1.4pt 0cm;" class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">
<i class=""><span lang="DE" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(79, 129, 189);" class="">"The voice of ignorance speaks loud and long,</span></i></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">
<i class=""><span lang="DE" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(79, 129, 189);" class="">  but the words of the wise are quiet and few"<o:p class=""></o:p></span></i></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">
<i class=""><span lang="DE" style="font-size: 8pt; font-family: Arial, sans-serif; color: rgb(79, 129, 189);" class="">                                                 Ancient Proverb</span></i></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">
</div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">
<br class="">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<br class="Apple-interchange-newline">
</div>
<br class="Apple-interchange-newline">
<br class="Apple-interchange-newline">
</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 27 Jun 2018, at 08:42, Michael Nisi <<a href="mailto:michael.nisi@gmail.com" class="">michael.nisi@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">Here’s how v8::JSON, the JSON parser in Node’s JavaScript engine, does it:<br class="">
<br class="">
<blockquote type="cite" class="">JSON.stringify({})<br class="">
</blockquote>
'{}'<br class="">
<blockquote type="cite" class="">JSON.stringify({ name: null })<br class="">
</blockquote>
'{"name":null}'<br class="">
<blockquote type="cite" class="">JSON.stringify({ name: undefined })<br class="">
</blockquote>
'{}'<br class="">
<blockquote type="cite" class="">JSON.stringify({ name: 'Lionel' })<br class="">
</blockquote>
'{"name":"Lionel"}’<br class="">
<br class="">
<blockquote type="cite" class="">JSON.parse('{}').name<br class="">
</blockquote>
undefined<br class="">
<blockquote type="cite" class="">JSON.parse('{ "name": null }').name<br class="">
</blockquote>
null<br class="">
<br class="">
JavaScript differentiates between null and undefined, without wanting to get philosophical here.<br class="">
<br class="">
Michael<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">On 27. Jun 2018, at 09:21, <a href="mailto:zxq9@zxq9.com" class="">
zxq9@zxq9.com</a> wrote:<br class="">
<br class="">
Erlang -> JSON<br class="">
- true      -> true<br class="">
- false     -> false<br class="">
- undefined -> null<br class="">
- Atom      -> String<br class="">
<br class="">
JSON -> Erlang<br class="">
- true  -> true<br class="">
- false -> false<br class="">
- null  -> undefined<br class="">
<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>