私はhaskellの2つのリストの同じインデックスの要素を比較しようとしています。 2つの要素が同じインデックスで等しい場合、そのインデックスを返す必要があります。 私はfilterとzipを使って2つの関数を比較する方法を知っていますが、私の関数はインデックスの代わりに値を返します。同じインデックスの要素を比較する
compare l1 l2 = map fst . filter (\(x,y) -> x == y) $ zip l1 l2
私はGHCiのでそれを実行すると、私は
compare [1,2,3,4,5] [1,2,3,7,8,9,11,5]
[1,2,3]
を持っている私の代わりに[0,1,2]
を持っていると思います。誰も私にこのことについてどうやってヒントを与えることができますか?
これは習慣とスタイルの問題です。私は 'compare 'xs ys = map fstと書いたでしょう。フィルタsnd。 zip [0 ..] $ zipWith(==)xs ys' –