OCaml에 대한 나의 새로운 점을 용서하십시오. 그러나 두리스트의 교차를 반환하는 매우 간단한 함수를 가지고 있습니다. 세 번째 줄에는 "이 표현식에 'a type이 있지만 목록에'표현식이 있어야합니다. '라는 출력이 있지만 목록이 아닙니다.왜이 목록이 아닌가요?
let rec intersection (l1 : 'a list) (l2 : 'a list) : 'a list = match l1,l2 with
| [],[] -> [] (* empty lists *)
| [h1::t1], [h2::t2] -> (* non-empty lists *)
if h1 = h2 (* if both elements are the same *)
then h1 :: intersection(t1,t2) (* include in intersection response *)
else intersection(t1, t2) (* else ignore it and check the remaining elements *)
모든 팔은 동일한 유형을 반환해야합니다. 'else' 표현식에서'intersection (t1, t2)'는'a '를 반환 할 수 있습니다. 함수 전체를 게시하는 것이 더 도움이 될 것입니다. – PieOhPah
'intersection (t1, t2)'는 튜플'(t1, t2)'와 'intersection'을 호출합니다. 그것은'intersection t1 t2'라고 불려야합니다. – PieOhPah
유형 오류가있는 것으로 변경되지 않는 것 같습니다. 여전히 얻을 이 표현식에는 'a 표현식이 있어야합니다. 형식은 '입니다. 유형 변수 '는 목록 내부에서 발생합니다' – Swift142