调用参数列表的方便方法是什么,但每次只使用相同位置的项目?

xzh*_*zhu 2 haskell

我知道在Haskell中有一个非常有用的简洁模式,用于将函数应用于参数列表:

?> rem <$> [23, 45] <*> [7, 11]
[2,1,3,1]
Run Code Online (Sandbox Code Playgroud)

是否有一种类似的方便方法只能调用相同的相应索引中的项目?在上面的例子中,它只是rem 23 7rem 45 11不是所有可能性.

Sam*_*den 12

用途zipWith:

zipWith rem [23, 45] [7, 11]
Run Code Online (Sandbox Code Playgroud)

如果您有更多的名单,还有zipWith3,zipWith4

您也可以使用以下ZipList应用程序:

getZipList $ rem <$> ZipList [23, 45] <*> ZipList [7,11]
Run Code Online (Sandbox Code Playgroud)

  • `ZipList`抽象的+1,它概括了`zipWithX`.新手的旁注:``纯x = [x,x,x,x,...]`用于`ZipList`,这是`Applicative`实例的正确选择,但并不明显. (4认同)