2010-06-17 34 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]).