我想实现一个 Erlang 解释器,最近我在阅读 Erlang 的标准库源代码。我在 erlang.erl 中找到 erlang:display/1 的源代码是:
%% display/1
-spec erlang:display(Term) -> true when
Term :: term().
display(_Term) ->
erlang:bif_error(undefined).
我不知道它是如何产生显示行为的,我认为它只是抛出一个未定义的错误。 顺便说一句,我还破解了 erlang.beam 以确保字节码具有与源代码 (erlang.erl) 相同的语义。 谁能告诉我 erlang:display 实际上是怎么做的?
最佳答案
erlang:display/1
是一个 BIF(内置函数)。一些 BIF 在 Erlang 中实现,但大多数在 Erlang 虚拟机中作为原始操作实现,因为 BIF 提供操作系统接口(interface)或执行在 Erlang 中编程不可能或效率非常低的操作。
您可能想看看 A GUIDE TO THE ERLANG SOURCE , 简而言之,它说;
BIF 汇总在 bif.tab 中文件。例如:
Line 54: bif erlang:display/1
表示 display/1
BIF 映射到 bif.c 中的 display_1
方法文件。
关于erlang - Erlang 如何实现 erlang :display actually?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28021081/