2013-12-17 230 views
1

我目前在Haskell中,其中一個圖是一個元組列表圖形工作的列表:獲取一個元組的第一個元素,在元組

type Graph = [(Node, Node)]

,我需要做一個列表中包含的所有節點,我的想法是採取每個元組的第一個元素,然後刪除與rmdup重複。我真的被困在這裏,任何幫助將不勝感激。

回答

3

如果您有變量x的圖形,使用

nub $ (map fst x) ++ (map snd x) 

map fst x得到所有節點的元組的第一個元素,用snd相似。 (++)將它們連接在一起,並且nub刪除重複項。

+0

你看,他不需要元組的第二個元素:) –

+0

@ MihaiMaruseac-我不清楚....他說「所有節點」。是否因爲對於處理圖的人來說顯而易見的是,任何(a,b)鏈接都需要相應的(b,a)鏈接? – jamshidh

+0

「我的想法是採取每個元組的第一個元素,然後刪除與rmdup重複。」 –

2

當你有t類型(即[t])的元素的列表,以在列表中的每個元素應用功能(簽字t -> b說),你需要使用map

現在,轉向Hoogle及配件拼在一起,我們有:

  • [(Node, Node)]類型的列表,讓我們說[(a, a)]
  • 我想,結果東西型。
  • 我們需要一個函數從[t1]得到[t2]Searching我們到map :: (t1 -> t2) -> [t1] -> [t2]
  • 現在我們需要在map中的功能。把上面的代碼我們得到t1 = (a, a)t2 = a所以我們需要一個函數(a, a) -> aSearching我們得到fst

把一切就緒:map fst list。然後,要刪除重複項,請使用相同的搜索方法並達到nub

相關問題