我正在寻找一种方法来编写一个函数,该函数应用提供的函数并将参数和函数结果包装在元组中。如:
applyZip :: (a -> b) -> a -> (a,b)
applyZip f x = (x, f x)
有没有更惯用的方式在Haskell中编写它,最好用库代码?
修改: 我真的对其他解决方法感兴趣。如果您发现自己遇到同样的问题,那么最好使用描述性名称实现该功能。
答案 0 :(得分:7)
您可以使用:
import Control.Monad(ap)
applyZip :: (a -> b) -> a -> (a,b)
applyZip = ap (,)