应用函数并在Haskell中包含元组

时间:2017-05-29 18:26:27

标签: haskell

我正在寻找一种方法来编写一个函数,该函数应用提供的函数并将参数和函数结果包装在元组中。如:

applyZip :: (a -> b) -> a -> (a,b)
applyZip f x = (x, f x)

有没有更惯用的方式在Haskell中编写它,最好用库代码?

修改: 我真的对其他解决方法感兴趣。如果您发现自己遇到同样的问题,那么最好使用描述性名称实现该功能。

1 个答案:

答案 0 :(得分:7)

您可以使用:

import Control.Monad(ap)

applyZip :: (a -> b) -> a -> (a,b)
applyZip = ap (,)

我们在这里使用ap :: Monad m => m (a -> b) -> m a -> m b函数。