2014-11-16 7 views

답변

2

새로운 유형은 단지 두 개의 튜플이므로 패턴 일치를 사용할 수있다. 다른 유형의 것 같은 :

- val a = (1, "a"); 
val a = (1,"a") : int * string 

- case a of (_, str) => str; 
val it = "a" : string 

- (fn (_, str) => str) a; 
val it = "a" : string 

이 공동 작업을하게되면, 당신은 유틸리티 기능 사용을 고려할 수 있습니다

fun unpackStr (_, str) = str; 
+0

정말 감사합니다! 하지만 유형을 알 수없는 상황은 어떻습니까? 예 : val findElem = (fn (_, _, 'a) =>'a); 세 번째 요소는 알 수없는 유형이며, "val : findElem = (fn (_, _, 'a) =>'a)"이라고 쓰면 오류 '구문 오류 : TYVAR RPAREN DARROW 삭제'오류가 표시됩니다. – FionaMango

+0

'str'은 변수 일뿐 특별한 의미는 없습니다. 원하는 변수 이름을 사용하면 ML은 가능한 가장 다형성 유형을 추론합니다. –

+0

감사합니다. 이해합니다. – FionaMango

3

당신은의 n 번째 요소를 얻기 위해 #n 연산자를 사용 할 수 있습니다 임의의 튜플. REPL에서 :

- #1("one", "two"); 
val it = "one" : string 
- #2("one", "two"); 
val it = "two" : string