haskell - 如何创建一个可以采用函数元组而不是单个函数的 fmap?
问题描述
这可能是一种构建方式
是否有(理想的标准)完成方式
f :: Int -> Int
f x = 2*x
g :: Int -> String
g x = show x
h = (f, g)
fmap h 5 -- results in: (10, "5")
一般来说,对于某些变量类型 T_i 和固定类型 A 从 A->T_i 开始的函数,我认为这只是BiFunctor的简化,至少对于 1 参数函数的 2 元组 - 它是很高兴看到超越 2 元组的泛化。
解决方案
您可以使用uncurry (&&&)
,如下所示:
> import Control.Arrow
> f :: Int->Int ; f x = 2*x
> g :: Int->String ; g x = show x
> h = (f, g)
> uncurry (&&&) h 5
(10,"5")
推荐阅读
- angularjs - 当我为当前位置调用地理定位时。我面临这样的错误
- sas - SAS 代码。如何在 SAS 中绘制变量 y 在 x 上的动态(最简单的方法!)
- c# - ImageMagic 无法捕获异常
- laravel - 如何避免在laravel中使用没有模型的remember_token?
- amazon-web-services - 如何从 AWS cloudwatch 输入转换器创建 JSON
- javascript - 用于旋转页面上某些 div 元素的 Javascript 函数
- scala - 带 3 个参数的 zip 函数
- javascript - 在 Firefox 中是在重定向之前删除的 ajax 调用
- java - 规范中的 JPA AttributeConverter 搜索谓词
- nativescript - NativeScript Sidekick