为什么Erlang中的nil> 0?

Dim*_*bas 5 erlang

Erlang是我遇到的第一种用于nil> 0的语言.

这个决定背后的故事是什么?

其他语言似乎表现不同.

蟒蛇:

None > 0
# False
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

null > 0
// false
Run Code Online (Sandbox Code Playgroud)

红宝石:

nil > 0
NoMethodError: undefined method `>' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

bya*_*haf 10

在Erlang中,任何术语都可以与任何其他术语进行比较.Erlang Term Comparisons的排序是:

number < atom < reference < fun < port < pid < tuple < map < nil < list < bit string
Run Code Online (Sandbox Code Playgroud)

因此零> 0真实的更多信息期限比较

  • 在上面的顺序中,`nil`实际上代表空列表`[]`,而如果你在Erlang代码中写`nil`,它就是一个原子.根据排序,任何原子都比任何引用都"少",因此`nil> make_ref()`计算为'false`.另一方面,`[]> make_ref()`的计算结果为`true`. (4认同)