2016-10-05 19 views
7

これは学校の課題ですが、投稿しようとしていることはすべて私と私だけです。それゆえ、私はあなたが私が執着している私の任務の小さなステップのためにあなたの助けを必要とするだけです。F#If Statement List.exists

何私は助けを必要とする要素y iはというエラーを取得する時点のリストYS

のメンバーであるかどうかを確認するif文作っている

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] 

:「この表現はタイプ を持っていることが予想されたが'' - > bool ' ここにタイプがあります 'ブール '"

誰かが私に間違っていることを教えてもらえますか?

+3

まず、 'y'と' List.exists y ys'を比較します。これは真または偽を返します。あなたはおそらく 'if(List.exists y ys)then' –

+5

と書いたかった。次に、 'List.exists'は関数を期待する。リストにアイテムが含まれているかどうかを確認するには 'List.contains'を使用してください –

+1

私はこのエクササイズが標準機能の使用を暗示しているとは思いません:) –

答えて

8

List.existsは、最初の引数が要素でチェックされ、ブール値を返す関数であると想定しています。

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

かさえ:

if List.contains y ys then 

パナギオティスの提案、次のあなたは、要素がリストにある場合は、書くことができる確認したいです。

+0

これは機能します!本当にありがとう! – Nulle