Хотя вопрос старый, я выкладываю то, что помогло мне, когда я боролся с компилятором Erlang.
Этот (неполный) фрагмент
-export([start/0]).
start() ->
Ping = spawn(?MODULE, ping, [[]]),
...
ping(State) ->
receive
...
end.
завершается ошибкой:
=ERROR REPORT==== 2-Sep-2013::12:17:46 ===
Error in process <0.166.0> with exit value: {undef,[{pingpong,ping,[[]],[]}]}
, пока вы явно не экспортируете функцию ping/1
.Так что с этим экспортом:
-export([start/0, ping/1]).
это работает.Я думаю, что путаница возникла из некоторых примеров из Learn You Some Erlang для хорошего блага , где у модулей иногда есть
-compile(export_all).
, который легко пропустить