我试图在haskell中两个列表的相同索引处比较元素。如果这两个元素在相同索引处相等,那么我必须返回该索引。 我知道如何比较两个函数使用过滤器和zip,但我的函数返回值而不是索引。比较同一索引处的元素
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]
代替。任何人都可以给我提示如何去做这件事?
这是一个习惯和风格的问题。我会写'比较'xs ys = map fst。过滤器snd。 zip [0 ..] $ zipWith(==)xs ys' –