2016-10-30 4 views
2

第二タプル要素に置き換えます翻訳する要素のリストとしてlist2 - : -
[("aaa", "bb"), ("d", "efg"), ("if found this", "replace with this")]

タプルの形で辞書としてlist1を:["aaa", "efg", "zzz"]リスト要素は、第一組の要素と一致した場合、私は2つのリスト与えられています

私はlist2要素がlist1タプル第二の要素と一致した場合にlist2からの要素がlist1要素からタプル第二要素と置き換えているリストを返す必要があります。この例の結果リストは次のようになります["bb", "efg", "zzz"]

これを行う方法は? 私はハスケルを最近覚え始めたので、構文が私の主な問題です。私は、関数定義は、この
replace :: Eq a => [(a,a)] -> [a] -> [a]
のように見えるとすべきだと思うタプルからキープ値を発見し、再帰的に機能replaceを呼び出す場合、値はlist2からキープ値を見つからない場合、TIはタプルでlist2値を見つけてみてくださいような何かをする必要がある関数再帰呼び出し関数replaceを呼び出します。

答えて

1

ホイールを改造する必要はありません。

import qualified Data.Map as M 

list1 = [("aaa", "bb"), ("d", "efg"), ("if found this", "replace with this")] 
list2 = ["aaa", "efg", "zzz"] 

replace d = map (\k -> M.findWithDefault k k d) 

main = print $ replace (M.fromList list1) list2