Большинство функций списка на самом деле использует '++' оператор: например, list:append/2:
исходный код определяет его следующим образом:
-spec append(List1, List2) -> List3 when
List1 :: [T],
List2 :: [T],
List3 :: [T],
T :: term().
append(L1, L2) -> L1 ++ L2.