2016-10-05 4 views
7

이것은 학교 과제이지만, 게시하려고하는 모든 내용은 나와 저만 수행합니다. 그러므로 나는 단지 내가 붙어있는 나의 임무의 작은 단계를 위해 당신의 도움을 요구한다.F # If Statement List.exists

let rec removeDuplicates2 xs = 
    match xs with 
    |[]->[] 
    |y::ys -> if y = (List.exists y ys) then 
       (removeDuplicates2 ys) 
      else 
       y::(removeDuplicates2 ys) 

printfn "%A" (removeDuplicates2 [3;1;3;2;1]) // result must be [3;1;2] 

내가 뭘 요소 y는 목록 YS의 일원 내가 말하는 오류 얻을 순간

경우 확인하는 if 문을 만드는 도움이 필요합니다 "이 표현은 유형 이 예상되었다 ''- bool ' 하지만 여기에 유형이 있습니다. 'bool ' "

누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?

+3

먼저, y를 List.exists yys와 비교하여 true 또는 false를 반환해야합니다. 당신은 아마도'if (List.exists y ys) then' –

+5

이라고 쓰고 싶었습니다. 둘째,'List.exists'는 함수를 기대합니다. 목록에 항목이 들어 있는지 확인하고 싶다면'List.contains'를 사용하십시오 –

+1

나는 운동이 표준 함수의 사용을 의미하지 않는다고 생각합니다 : –

답변

8

List.exists는 첫 번째 인수가 요소에서 검사되고 부울 값을 반환하는 함수 여야한다고 가정합니다. 당신은 요소가 목록에 있는지 당신이 쓸 수 확인하려면 : 파나지오티스 제안 다음

if List.contains y ys then 

:

if List.exists ((=) y) ys then 

또는를.

+0

이것은 작동합니다! 정말 고마워! – Nulle