SP
erts_cmp_compound
который обходит рекурсивно: https://github.com/erlang/otp/blob/43240eaad84cc4dc839952d409e918c0b9bc83f8/erts/emulator/beam/utils.c#L3070-L3565Size: a a a
SP
erts_cmp_compound
который обходит рекурсивно: https://github.com/erlang/otp/blob/43240eaad84cc4dc839952d409e918c0b9bc83f8/erts/emulator/beam/utils.c#L3070-L3565СИ
erts_cmp_compound
который обходит рекурсивно: https://github.com/erlang/otp/blob/43240eaad84cc4dc839952d409e918c0b9bc83f8/erts/emulator/beam/utils.c#L3070-L3565SP
SP
#define CMP_EQ(a,b) ((a) == (b) || CMP_EQ_ONLY((a),(b)) == 0)
DR
SP
erlang:'=='/2
есть ещё куча точек входа (beam инструкции) которые могут другими макросами пользоватьсяSP
SP
erts_cmp_compound
а int eq(Eterm a, Eterm b)
https://github.com/erlang/otp/blob/43240eaad84cc4dc839952d409e918c0b9bc83f8/erts/emulator/beam/utils.c#L2701-L3044SP
==
может свалиться в erts_cmp_compound а =:=
в eq
SP
is_same(a, b)
)SP
test([A, B, C] = List) ->
test(List, List).
test(OrigList, CurrentList) ->
case ... of
... ->
ToAdd = lists:filter(fun (Elem) ->
lists:member(Elem, OrigList)
end, CurrentList)
test(OrigList, CurrentList ++ ToAdd)
end
eq
, не cmp
): https://github.com/erlang/otp/blob/8342a099cf94cef4de1c845841bbffd15ecac4a6/erts/emulator/beam/erl_bif_lists.c#L1073DR
eq
, не cmp
): https://github.com/erlang/otp/blob/8342a099cf94cef4de1c845841bbffd15ecac4a6/erts/emulator/beam/erl_bif_lists.c#L1073V
СИ
V
V
ŹR
YZ
ŹR