我正在寻找一种方法来编写一个函数,该函数应用提供的函数并将参数和函数结果包装在元组中.如:
applyZip :: (a -> b) -> a -> (a,b)
applyZip f x = (x, f x)
Run Code Online (Sandbox Code Playgroud)
是否有更惯用的方法在Haskell中编写它,最好是使用库代码?
编辑:我真的对其他解决方法感兴趣.如果您发现自己遇到同样的问题,那么使用描述性名称自行实现该功能可能更为可取.
您可以使用:
import Control.Monad(ap)
applyZip :: (a -> b) -> a -> (a,b)
applyZip = ap (,)Run Code Online (Sandbox Code Playgroud)
在这里我们使用该ap :: Monad m => m (a -> b) -> m a -> m b功能.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |