如何创建一个可以包含多个函数而不是单个函数的fmap?

时间:2019-01-26 13:29:25

标签: haskell category-theory

这可能是一种构建方式

是否有(理想的标准)完成方式

 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元组的情况将非常棒。

1 个答案:

答案 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")