2010-04-12 2 views
1

Ocaml에서 정수 목록의 항목 수를 계산하는 재귀 함수를 작성하고 있습니다 (예, List.length 함수가 있음을 알고 있지만 직접 처리하려고합니다). 그러나 Ocaml 컴파일러/해석기는 알파 목록을 항상 사용하도록 강요합니다.정수 목록 만 받아들이는 Ocaml 함수를 사용할 수 있습니까?

함수가 매개 변수로 목록을 받아 들일 때 해당 목록의 형식은 항상 알파이어야합니다. 감사합니다

편집 : 내가 불만

답변

6

쉬운 일치하는 입력에 의한 정수 값으로 알파리스트의 머리를 비교할 수 없기 때문에 나를 알파 목록을 사용하는 것이 불편 이유는 다음과 같습니다

let length (lst : int list) = ... 

나는 약간의 비교가 당신을 위로 걷는 것을 혼란스럽게 생각합니다. 정수와의 비교는 'aint으로 제한해야합니다. 예를 들어,

let length lst = match lst with 
    | x :: xs when x = 0 -> ... 

lst 입력 int list있을 것입니다.

+0

'rec'를 추가해야 할 수 있습니다. – grettke

+1

OCaml이 오랫동안 어쨌든 길가에 남긴 문구 인 "principal type"을 사용하지 않았기 때문에 한 번만 upvoting했습니다. –

관련 문제