这可能是一种构建方式
是否有(理想的标准)完成方式
f :: Int -> Int
f x = 2*x
g :: Int -> String
g x = show x
h = (f, g)
fmap h 5 -- results in: (10, "5")
通常,对于从A-> T_i到某些变量类型T_i和固定类型A的函数,我认为这只是BiFunctor的简化,至少要租用2元组1参数函数-看到泛型超出2元组的情况将非常棒。
答案 0 :(得分:8)
您可以使用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")