我想要創建一個函數,它接受一個列表並返回一個帶有刪除重複項的列表。F#使用函數從列表中刪除重複項
let removedupes list1 =
let list2 = []
let rec removeduprec list1 list2 =
match list1 with
| [] -> list2
| head :: tail when mem list2 head = false -> head :: removeduprec tail list2
| _ -> removeduprec list1.Tail list2
removeduprec list1 list2
進出口使用這種「MEM」功能走線槽清單,看看是否值已經存在,在這種情況下,我會繼續用遞歸。
let rec mem list x =
match list with
| [] -> false
| head :: tail ->
if x = head then true else mem tail x
當我測試此代碼,我得到
let list1 = [ 1; 2; 3; 4; 5; 2; 2; 2]
removedups list1;;
val it : int list = [1; 2; 3; 4; 5; 2; 2; 2]
林認爲「頭:: removeduprec尾列表2」,但即時通訊相當新的F#所以不能完全肯定這是如何工作。
更簡單的方法在這裏:http://stackoverflow.com/questions/6842466/ –
設置不包含重複項。也許從列表創建集? – Alexan
@Alex - 我鏈接的其中一個答案使用set。構造函數爲你刪除重複項。 –