Compilation 函数中的ML编译错误

Compilation 函数中的ML编译错误,compilation,smlnj,ml,Compilation,Smlnj,Ml,在修复以下代码数小时后,我陷入了以下编译错误消息中,无论我尝试什么,我都无法修复它 错误:语法错误:删除结束RPAREN 代码是: fun we (array1 , k, n, fif1) = if Queue.isEmpty fif1 then (array1, ~1 , n , fif1 ) else ( let val b = Queue.head(fif1) val y = Queue.dequeue(fif1)

在修复以下代码数小时后,我陷入了以下编译错误消息中,无论我尝试什么,我都无法修复它

错误:语法错误:删除结束RPAREN

代码是:

 fun we  (array1 , k, n, fif1) = if Queue.isEmpty fif1 then (array1, ~1 , n ,
   fif1 )
    else (  
     let
        val b = Queue.head(fif1)
        val y = Queue.dequeue(fif1)
        val z = #1 b
        in 
            if ( (Array.sub (array1 , z))  = (What) ) then (array1 , #2 y ,    n    , fif1 ) else 
            (
            if (Array.sub (array1 ,(z+n) ) <> ( Block) ) then (
            ( Queue.enqueue ( fif1 , (z, (#2 b) ))) ; Array.update (array1 , ((z)+n) , Block)) else (); 
            if ( (Array.sub (array1 , (z+1)) ) <> ( Block) ) then (
            Queue.enqueue ( fif1 ,((z+1), ((#2b) + 1)));  Array.update (array1 , (z+1) , Block)) else () ; 
            if (Array.sub (array1 , (z-1 ) ) <> ( Block) ) then (
            Queue.enqueue ( fif1 , (((z-1), ((#2 b)+1) ) )) ; Array.update (array1 , (z-1) , Block)) else () ; 
            if ( (Array.sub (array1 , (z-n ) )) <> (Block) ) then 
            ( Queue.enqueue ( fif1 , ((z-n), ((#2 b)+2 )) );  Array.update (array1 , (z-n) , Block) ) else () ;
            we (array1 , k, n , fif1));
        end ) 

fun tb filename =
let
 val (n, array1) = parse filename
 val c = findt (T, array1, 0) 
 val fif1 = Queue.mkQueue ()
in
  #2 we (array1, 0, n, Queue.enqueue (fif1 , (c,0) ) )
end
任何可能的帮助都将不胜感激,提前谢谢

            we (array1 , k, n , fif1));
        end )
在SML
是语句分隔符,而不是语句终止符。这意味着:如果你有一个包含多个语句的块,你就把
在语句之间,但不放置
位于块中最后一条语句之后。换句话说:应该没有
之后我们(数组1,k,n,fif1))


在这里,您使用两个参数调用
#2
:函数
we
和元组
(array1,…)
。您要做的是调用
we
,将元组作为其参数,然后调用
#2
,将结果作为其参数。那将是
#2(我们(array1,0,n,Queue.enqueue(fif1,(c,0)))

非常感谢!我会试着把它修好。如果出现其他问题,我将在这里发表评论,如果您稍后能检查一下这个问题,以防我在代码中遇到其他问题,我将不胜感激。现在出现的问题如下:val fif1=Queue.mkQueue(),in#2(we(array1,0,n,Queue.enqueue(fif1,(c,0)))stdIn:60.6-60.32错误:运算符和操作数不一致[tycon不匹配]运算符域:单位操作数:表达式中的int*int:Queue.mkQueue(0,0)stdIn:61.9-61.57错误:运算符和操作数不一致[tycon不匹配]运算符域:方形数组*int*int*(int*int)Queue.Queue操作数:平方数组*int*int*表达式中的单位:bfs1(array1,0,n,Queue.enqueue(fif1,(,))
            we (array1 , k, n , fif1));
        end )
#2 we (array1, 0, n, Queue.enqueue (fif1 , (c,0) ) )