2014-10-27 33 views
-1

我無法弄清楚如何從元組列表中刪除所有重複列表 例如[(1,2),(2,1),(5,2),( 5,6)]刪除哈希克列表中的重複元組

這裏的重複將是(2,1)(與訂單無關)。我只想刪除其中一個副本,我該怎麼做?

symEq :: Eq a => (a,a) -> (a,a) -> Bool 
symEq (x,y) (u,v) = (x == u && y == v) || (x == v && y == u) 

removeDuplTuples :: Eq a => [(a,a)] -> [(a,a)] 
removeDuplTuples = nubBy symEq 

下面是一些代碼,我看,但我不認爲這是完全相關的

+0

在這種情況下,我想(2,1)重複 – Sprout 2014-10-27 21:33:14

+3

您是否嘗試過運行該代碼? – genisage 2014-10-27 21:33:29

+0

是的,它返回一個錯誤,說nubBy是一個未定義的變量 – Sprout 2014-10-27 21:34:49

回答

5

您發佈的代碼是完全相關的,正是你想要的...

讓一步通過它:

symEq需要兩個元組,並檢查第一個和最後一個元素是否相等,或者如果彼此相對的元素是相等的。

nubBy只是nub使用自定義函數而不是(==)

nubBy是在Data.List包中,只是在文件的開頭做了import Data.List才能夠使用它。

+0

我試過這樣做,但它出於某種原因導入有錯誤 – Sprout 2014-10-27 22:29:52

+0

@Sprout嘗試做''導入Data.List(nubBy)'' – ThreeFx 2014-10-27 22:30:53