Загадочные ошибки Эрланга - PullRequest
2 голосов
/ 17 июня 2010

Хорошо, я недавно начал изучать эрланг, но озадачен ошибками, которые он продолжает возвращать. Я сделал кучу изменений, но продолжаю получать ошибки. Насколько я могу судить, синтаксис правильный, но явно я что-то не так делаю. Посмотрите ...

-module(pidprint).
-export([start/0]).

dostuff([]) ->
    receive
        begin ->
     io:format("~p~n", [This is a Success])
 end.

sender([N]) ->
    N ! begin,
    io:format("~p~n", [N]).


start() ->
    StuffPid = spawn(pidprint, dostuff, []),
    spawn(pidprint, sender, [StuffPid]).

По сути, я хочу скомпилировать скрипт, вызвать start, вызвать процесс "dostuff", передать его идентификатор процесса процессу "sender", который затем распечатывает его. Наконец, я хочу отправить атом "begin" процессу "dostuff", используя идентификатор процесса, первоначально переданный отправителю, когда я его породил.

Ошибки, которые я продолжаю получать, возникают, когда я пытаюсь использовать c() для компиляции скрипта. Вот они ..

./pidprint.erl:6: syntax error before: '->'
./pidprint.erl:11: syntax error before: ','

Что я делаю не так?

1 Ответ

6 голосов
/ 17 июня 2010

Это появляется , что начало - зарезервированное слово на Erlang Используйте другой атом или заключите в него одинарные кавычки: «начало».

Кроме того, вы забыли двойные кавычки вокруг «Это успех».

Я исправил еще пару ошибок ...

-module(pidprint).
-export([start/0, dostuff/0, sender/1]).

dostuff() -> 
   receive 
      'begin' ->
         io:format("~p~n", ["This is a Success"])
   end.

sender(N) -> 
   N ! 'begin',
   io:format("~p~n", [N]).

start() -> 
   StuffPid = spawn(pidprint, dostuff, []), 
   spawn(pidprint, sender, [StuffPid]).
...