2017-08-22 26 views
0

私はHaskellはどのように機能するかを取得しようとするのは非常に簡単な例をやろうとしていると私は、次の疑問があります。私はアクセスする方法を知りたいhaskellのリスト内のタプルの内容にアクセスする方法は?

associated :: (Eq a) => a -> [(a,b)] -> [b] 
associated a tuple = [b | b <- tuple, a==fst(tuple) ] 

:私はこのコードを持っている

をリストのタプルの内容を比較します。ありがとう。

答えて

2

あなたがリストをフィルタリングし、fst値とることができます。

associated :: (Eq a) => a -> [(a,b)] -> [b] 
associated a tuplst = map snd $ filter (\(x,_) -> a == x) tuplst 

または類似の挙動の理解を使用する:あなたはパターン(a', b) <- tuplsと理解の内側にタプルを一致させることができます

associated a tuplst = [b | (a', b) <- tupls, a == a'] 

、これは解凍されます値をa'と 'b'に設定してから、bを取るだけでa == a'というフィルタを追加してください。

+0

ありがとうございます!私はsintaxで苦労している。 – looker

+0

私はこれが宿題の質問であることを合理的に確信しています - 元の関数の署名はおそらく 'Eq a => a - > [(a、b)] - > [b]' – Cubic

+0

でした。リストの理解度を使ってそれをやりたいのであれば、それはどうなるでしょうか? – looker

関連する問題