2016-10-05 49 views
7

這是一個學校作業,但我即將發佈的內容僅由我和我完成。因此,我只需要你的幫助,在我被困住的任務中邁出一小步。F#如果語句列表存在

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] 

什麼,我需要幫助正在if語句來檢查,如果元素y是列表YS成員

此刻我得到的錯誤說:「這表達預計將有類型 ''a - > bool' 但這裏有 'bool''

有人能告訴我我做錯了什麼嗎?

+3

首先,你將'y'與'List.exists y ys'比較,它應該返回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