2013-06-13 3 views
0

다음 코드를 수정 한 후 다음 오류 메시지가 표시되고 아무리 시도해도 문제가 해결되지 않습니다.함수에서 ML을 컴파일 할 때 오류가 발생했습니다.

오류 : 구문 오류 : 삭제 END 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) 

    fun tb filename = 

가능한 모든 도움 것의이 부분에 관한 것입니다 크게 감사드립니다, 미리 감사드립니다! SML ;에서

답변

1
  we (array1 , k, n , fif1)); 
     end) 

성명 세퍼레이터 아니라 문 터미네이터이다. 이것이 의미하는 바는 : 여러 개의 문장을 포함하는 블록이있는 경우 문 사이에 ;을 넣되 블록의 마지막 문 다음에 ;을 넣지 마십시오. 즉, we (array1 , k, n , fif1)) 이후에는 ;이 없어야합니다. 기능 we과 튜플 (array1,...) : 여기

#2 we (array1, 0, n, Queue.enqueue (fif1 , (c,0))) 

당신은 두 개의 인수 #2를 호출하고 있습니다. 당신이하고자하는 것은 튜플을 인수로 사용하여 we을 호출 한 다음 결과를 인수로 사용하여 #2을 호출하는 것입니다. 그것은 #2 (we (array1, 0, n, Queue.enqueue (fif1 , (c,0)))) 일 것입니다.

+0

고맙습니다. 나는 그것을 고치려고 노력할 것이다. 다른 문제가 생기면 여기에 의견을 말하면 코드에 대한 몇 가지 다른 문제가있을 경우를 대비하여이 질문을 나중에 확인할 수 있으면 감사하겠습니다. – brera

+0

이제는 다음과 같은 문제가 발생합니다. val fif1 = Queue.mkQueue ( ) # 2 (우리는 array1, 0, n, Queue.enqueue (fif1, (c, 0)))) stdIn : 60.6- 60.32 오류 : 연산자 및 피연산자 동의하지 [TYCON 불일치] 오퍼레이터 도메인 : 부 피연산자 : Queue.mkQueue (0,0) 표준 입력 : * 식 INT INT 61.9-61.57 오류 : 연산자 및 피연산자를 돈 '가 t 동의 [TYCON 불일치] 오퍼레이터 도메인 : 사각형 배열 *의 INT *의 INT * (INT의 *의 INT) Queue.queue 피연산자 : 사각형 배열 * 식 INT의 *의 INT의 * 유닛 : bfs1 (array1,0, N, Queue.enqueue (fif1, (,))) – brera

관련 문제