Erlang BIFs内部列表模块

Erlang BIFs内部列表模块,erlang,Erlang,受这个问题的启发,我很想知道lists:reverse/2是如何在lists.erl模块的源代码中实现的 我发现在列表.erl中没有列表:reverse/2的实现,但是有一个列表:reverse/1的实现使用了列表:reverse/2: reverse([] = L) -> L; reverse([_] = L) -> L; reverse([A, B]) -> [B, A]; reverse([A, B | L]) -> lists:re

受这个问题的启发,我很想知道
lists:reverse/2
是如何在
lists.erl
模块的源代码中实现的 我发现在
列表.erl
中没有
列表:reverse/2
的实现,但是有一个
列表:reverse/1
的实现使用了
列表:reverse/2

reverse([] = L) ->
    L;
reverse([_] = L) ->
    L;
reverse([A, B]) ->
    [B, A];
reverse([A, B | L]) ->
    lists:reverse(L, [B, A]).
在文件的顶部有一些行告诉我们
列表:reverse/2
(和一些其他函数)是BIFs:

%%% BIFs
-export([keyfind/3, keymember/3, keysearch/3, member/2, reverse/2]).

...

%% Shadowed by erl_bif_types: lists:reverse/2
-spec reverse(List1, Tail) -> List2 when
      List1 :: [T],
      Tail :: term(),
      List2 :: [T],
      T :: term().

reverse(_, _) ->
    erlang:nif_error(undef).

问题:首先,我找不到这些BIF的实际实现。我在哪里可以找到它们?第二,如果有人也知道解释为什么它是这样组织的?

BIF是在中实现的
列表。为提高效率和性能,大量使用的标准模块(如
列表
)的一部分作为BIF实施。

列表
BIF在中实施。为提高效率和性能,大量使用的标准模块(如
列表
)的一部分被实现为BIF