-1
我試圖在Concurrent ML中創建一個像「抽象的郵箱」一樣的抽象。我的抽象有兩個通道用於獲取值(稍後存儲在名爲「緩衝區」的列表中)並將值發送出去。在Concurrent ML中創建一個類似抽象的「郵箱」
CM.make "$cml/cml.cm";
open CML;
fun mailbox inCh outCh buffer = let val inCh:int inCh =channel()
val outCh:int outCh=channel()
val buffer= [];
in
buffer= (recv inCh);
fun loop x = choose[wrap (recvEvt inCh, loop), wrap (sendEvt (outCh, (hd buffer)), buffer=tl(), loop x)];
end
fun main()=let
val iC:int iC=channel()
val oC:int iC=channel()
val buf=[];
in
spawn(fn()=> mailbox iC oC buf);
RunCML.doit(main,NONE);
()
end
此代碼似乎是正確的是語法,但給人一種編譯錯誤,指出
mailboxtemp.sml:7.28 Error: syntax error: inserting LET
mailboxtemp.sml:9.9 Error: syntax error: inserting IN ID END
uncaught exception Compile [Compile: "syntax error"]
raised at: ../compiler/Parse/main/smlfile.sml:15.24-15.46
../compiler/TopLevel/interact/evalloop.sml:44.55
../compiler/TopLevel/interact/evalloop.sml:296.17-296.20
有人可以幫我找到了,我可能犯了一個錯誤?
謝謝。