首页 > 解决方案 > 如何创建一个可以采用函数元组而不是单个函数的 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 元组的泛化。

标签: haskellcategory-theory

解决方案


您可以使用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")

推荐阅读