2010-06-17 33 views
2

好吧,所以我最近开始学习erlang,但却为它不断返回的错误感到困惑。我做了一堆改变,但我不断收到错误。就我所知,语法是正确的,但显然我做错了什么。看看...隐藏的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]). 

基本上我想编译脚本,通话开始,酿出“dostuff”的过程,其进程标识符传递给“发件人”的过程,然后打印出来。最后,我想使用最初传递给发送者的进程标识符在派生过程中将原子“begin”发送到“dostuff”进程。

当我尝试使用c()来编译脚本时,我一直发生错误。在这里,他们是..

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

我做错了什么?

+0

你应该标记与刻度正确的答案,如果它解决您的问题。 :-)这也会给回答者一些提示。 – 2010-07-14 08:49:28

回答

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