Erlang 인터프리터를 구현하고 싶습니다. 최근 Erlang의 표준 라이브러리 소스 코드에 대해 읽었습니다. 내가 얼랑의 소스 코드를 찾을 수 : erlang.erl에 표시/한 것은 :Erlang은 erlang을 어떻게 구현하나요? 실제로 표시됩니까?
%% display/1
-spec erlang:display(Term) -> true when
Term :: term().
display(_Term) ->
erlang:bif_error(undefined).
나는 그것이 표시 동작을 만들기 위해 어떻게 작동하는지 모른다, 나는 단순히 어쨌든 정의되지 않은 오류가 발생 생각합니다. 그런데 바이트 코드가 소스 코드 (erlang.erl)와 동일한 의미를 가지도록 erlang.beam을 해킹했습니다. 누구나 erlang : display가 실제로 어떻게하는지 말해 줄 수 있습니까?
대단히 고맙습니다. erlang : display/1은 실제 bif입니다.하지만 여전히 바이트 코드에서 erlang : 명령어가 call_ext_only이지만 bif1 또는 gc_bif1이 아닌 이유를 이해할 수 없습니다. add 또는 sub bif gc_bif2에 의해 적용된), 나는 call_ext_only의 의미를 매우 혼란스럽게 만든다 고 생각한다. 왜냐하면 보통 call_ext_only는 Erlang에서 구현 된 모듈의 함수에 사용해야한다고 생각하기 때문이다. –