2014-02-15 90 views
-3

我有一個列表A,[('a', 3), ('b', 0), ('c',0)],並且想用('b', 13)替換('b',0)。 並返回新列表B,[('a', 3), ('b', 13), ('c',0)]。我如何在Haskell中做到這一點?替換元組列表中的第二個元組值

感謝

+6

這個問題沒有顯示研究工作。請閱讀[如何提出一個好問題](http://stackoverflow.com/questions/how-to-ask)。 – crockeea

回答

1

如果你只是想要替換的('b', 0)所有出現的話,可以用map

b = map (\p -> if p == ('b', 0) then ('b', 13) else p) a 

如果你想,如果第一個元素是「B」,那麼您更換第二個值可以這樣做:

map (\[email protected](f, _) -> if f == 'b' then ('b', 13) else p) l 
+0

太棒了,我知道地圖將能夠做到這一點,但我不知道語法......我可以修改它,以便只有知道第一個值'b'時才能替換元組嗎? – hboy

+0

@ user1900750 - 是的,你可以看到更新。 – Lee

+0

非常感謝您的幫助! – hboy

0

您也可以這樣做;

set :: (Char,Int) -> [(Char,Int)] -> [(Char,Int)] 
set (k,v) []     = [] 
set (k,v) (t:ts) | k == fst t = (k,v) : ts 
       | otherwise = t : set (k,v) ts 
相關問題