2010-06-17 5 views
2

좋아, 그래서 최근에 일랑을 배우기 시작 했어.하지만 계속해서 돌아 오는 오류에 당황스러워. 나는 많은 변화를 만들었지 만 계속 오류가있다. 내가 말할 수있는 한 구문은 정확하지만 분명히 잘못된 것을하고있다. 수수께끼의 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"프로세스를 생성, 시작 전화 후를 출력은 "보낸 사람"프로세스에 자신의 프로세스 ID를 통과, 스크립트를 컴파일 할 ... 보라. 마지막으로 나는 원자를 생성 할 때 송신자에게 처음 전달 된 프로세스 식별자를 사용하여 "dostuff"프로세스에 원자 "begin"을 보내려고합니다.

c()을 사용하여 스크립트를 컴파일하려고하면 오류가 계속 발생합니다. 여기에 ..

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

내가 뭘 잘못하고 있니?

+0

당신은 눈금 표시 정답을 표시해야합니다. :-) 이것은 답변자에게도 몇 가지 포인트를 줄 것이다. –

답변

6

appears 시작은 얼랭의 예약어입니다. 다른 원자를 사용하거나 주위에 작은 따옴표를 넣으십시오 : '시작'.

또한 "큰 성공입니다"라는 큰 따옴표를 잊어 버렸습니다. 이 질문을 해결했다 만약 내가 고정 다른 버그 몇 가지가 있습니다

...

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