2

map次の型シグネチャを持つ Haskell に組み込まれた 2 つのオペランドに相当するものはありますか。

map2 :: (a -> b -> c) -> [a] -> [b] -> [c]

次の等価性が保持されます。

map2 operator as bs === [operator a b | (a, b) <- zip as bs]

例:

ghci> map2 (*) [2,3] [4,5]
[8,15]
4

3 に答える 3

1

より一般的な解決策は、 for リストのZipListインスタンスを使用することです。Applicative

let z = (+) <$> ZipList [2,3] <*> ZipList [4,5]
 in runZipList z

ここでの良い点は、任意のアリティの演算子で動作することです。そのため、zipWith3..の代わりにzipWith7、もう 1 つ追加するだけです。<*> e

于 2013-11-07T23:43:51.803 に答える