2011-05-05 4 views
4

나는 한 쌍의 temp를 취하는 함수를 가지고 있습니다.Ocaml : 한 항목의 한 항목에 일치합니다.

type temp = (pd * string);; 

임시로 해당 문자열을 추출하고 싶습니다. 하지만 그 유형 이후로 temp에 일치 할 수있는 함수를 작성할 수는 없습니다.

나는 함수 썼다 :

let print_temp(t:temp) (out: out_channel) : unit = 
    fun z -> match z with 
      (_,a) -> output_string out a " 
;; 

을하지만 그 날이 아니 기능을 말하는 오류를 제공합니다. 기본적으로 해당 문자열을 추출하여 인쇄하고 싶습니다. 이것에 대한 모든 의견을 주시면 감사하겠습니다.

답변

7

당신의 솔루션은 거의 정확합니다 - "재미있는 z ->"부분이 필요 없으며 관계가없는 것처럼 보입니다. 대신에 다음과 같이 t와 패턴 매치가 필요합니다 :

let print_temp (t:temp) (out:out_channel) : unit = 
    match t with 
    (_,a) -> output_string out a 

또한 함수 정의에 일치하는 패턴에 의해 더 간결하게이 작업을 수행 할 수 있습니다, 당신이 얻을 유형의 오류가이 장치를 반환 print_temp를 선언 있음을 말하고있다 코드에서

let print_temp ((_,a):temp) (out:out_channel) : unit = output_string out a 

실제로 함수를 반환했습니다 (fun z -> ...). t : temp는 여러분이 원하는 것입니다. 개미를 "떼어 놓으십시오"라고 말하면, 당신이 그것에 패턴 매치를한다는 것은 의미가 있습니다. 대신

match t with (_, a) -> output_string out a 

0

당신은 는 기능을 FST 사용할 수 있습니다 (그리고 SND을)

let a = fst t in output_string out a 

또는 더 간결

output_string out (fst t) 
관련 문제