2013-05-14 2 views

답변

1

필요를 나에게 제공,

fun unzip [] = ([],[]) 
    | unzip [(a,b)] = ([a],[b]) 
    | unzip (a,b)::ps = (a::(#1(unzip(ps))),(b::(#2(unzip(ps)))); 

그러나 컴파일되지 않습니다 :

는 그 코드를 시도했다. 필요함 ( (a,b)::ps ). 어떻게 든 SML은 패턴이 unzip (a, b)이고 그 다음 패턴을 설명하는 것과 다른 ::을 처리하고 있다고 생각했습니다. 나는 아직도 SML이 필요로하는 괄호가 필요한시기와 이유를 알지 못한다. 그러나 적절한 곳에 더 많이 추가하는 것은 많은 실수를 푸는 것으로 보인다.

사용중인 버전과 구문 수정. (나는 가능 코드에 다른 개선을하지 않았다, 나는 단지 고정 구문 있습니다.)

fun unzip [] = ([],[]) 
    | unzip [(a,b)] = ([a],[b]) 
    | unzip ((a,b)::ps) = (a::(#1(unzip(ps))),(b::(#2(unzip(ps))))) 
관련 문제