例如,给定一个值v
和一个函数f
,有没有办法让(f v,v)
点免费?
答案 0 :(得分:13)
或者,请注意,对于具有适当类型的函数h
和f
,
h >>= f = \w -> f (h w) w
所以你可以写
f >>= (,)
答案 1 :(得分:11)
import Control.Arrow
(g &&& f) v = (g v, f v)
-- ergo,
(id &&& f) v = (v, f v)
(f &&& id) v = (f v, v)
答案 2 :(得分:5)
如何使用Applicative
(->)
实例
liftA2 (,) id :: (a -> b) -> a -> (a, b)
例如
liftA2 (,) id succ 5
>>> (5,6)