隐秘的Erlang错误

时间:2010-06-17 04:33:26

标签: syntax erlang spawn

好的,所以我最近开始学习erlang,但对它不断返回的错误感到困惑。我做了一些更改,但我一直在收到错误。据我所知,语法是正确的,但显然我做错了。看看......

-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 个答案:

答案 0 :(得分:6)

它开始的appears是Erlang中的保留字。使用其他原子或在其周围加上单引号:'begin'。

另外,你忘了你的双引号“这是成功的”。

我修复了其他一些错误......

-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]).