Sml 错误:插入EQUALOP
嗨,有人能帮我弄清楚为什么我会被解雇吗Sml 错误:插入EQUALOP,sml,ml,Sml,Ml,嗨,有人能帮我弄清楚为什么我会被解雇吗 ERROR: Inserting EQUALOP 对于以下代码 fun generator inchan outchan n = if n>0 then (let fun loop () = val c =
ERROR: Inserting EQUALOP
对于以下代码
fun generator inchan outchan n = if n>0
then
(let
fun loop () =
val c = recv(outchan)
val _ = send (inchan, c)
in
(loop ();(generator inchan outchan (n-1)))
end)
else inchan;
输入
let
语句,然后定义函数。但是,在该函数中,您
似乎想要定义更多的变量。为此,您需要另一条let
语句。如果没有它,您将得到如下语法错误
请尝试使用此选项:
fun loop () = send (inchan, recv (outchan))
或者,如果您想要更清晰地显示单独的行:
fun loop () =
let
val c = recv (outchan)
in
send (inchan, c)
end
或许
fun loop () =
let
val c = recv (outchan)
val _ = send (inchan, c)
in
()
end
使用这个生成器代码,我如何递归地创建新邮箱,使第一个邮箱的outchan成为下一个邮箱的inchan?我不知道你想做什么,因为你没有解释。这段代码是循环函数的替代品,其他什么都没有。如果代码的另一部分不起作用,你应该问另一个问题。我必须实现一个生成函数来生成邮箱流。生成函数将由两个通道参数化,第一个邮箱的输入和输出通道,以及指示要生成多少邮箱的整数。此函数应为递归函数,并分配新通道。在递归调用generator时,上一个out通道应该是下一个邮箱的in通道。应将新通道分配为新的输出通道。我已经写了一个生成函数的代码,但是我认为有一个无限循环,因为它不会停止。生成函数的代码是'fun generator inchan outchan n=let fun loop incha outcha num=if(n>0)then((邮箱incha outcha);(loop outcha)(通道())(n-1)))else(inchan)在(循环inchan outchan n)端`