我们所有人从右到左都知道并喜欢/讨厌它:
(.) :: (b -> c) -> (a -> b) -> a -> c
什么是自然/从左到右合成的“最标准”运算符(在某种通用库中):
(???) :: (a -> b) -> (b -> c) -> a -> c
泛化了常识运算符的值,从()
视为函数:
(&) :: a -> (a -> b) -> b
可用于少数几种
PS:如果没有,则该运算符的名称的任何一边?在数学中,自然成分通常写为“;”但是第二个最好的名字是什么? (&.)
可能是吗?
答案 0 :(得分:8)
import Control.Arrow
(>>>) :: (a -> b) -> (b -> c) -> a -> c
实际上,(>>>)
比它更通用,因为它适用于任何类别,而不仅仅是(->)
函数。但是,它经常用于前向函数合成。
答案 1 :(得分:2)
功能组合是功能应用程序的一种形式。 (.) = (<$>)
和(<$>)
之所以如此命名是因为它通过函子表示函数应用程序(($)
)。同样,我们有反向函数应用程序(Data.Function.&)
,也有通过函子(Data.Functor.<&>)
实现反向函数应用程序。与(>>>)
相比,(<&>)
避免了仅Category
调用Functor
,但是另一方面,它是base
的相对较新的补充。>