haskell中自然顺序的功能组合

时间:2018-12-01 11:35:27

标签: haskell functional-programming

我们所有人从右到左都知道并喜欢/讨厌它:

(.) :: (b -> c) -> (a -> b) -> a -> c 

什么是自然/从左到右合成的“最标准”运算符(在某种通用库中):

(???) :: (a -> b) -> (b -> c) -> a -> c

泛化了常识运算符的值,从()视为函数:

(&) :: a -> (a -> b) -> b 

可用于少数几种

PS:如果没有,则该运算符的名称的任何一边?在数学中,自然成分通常写为“;”但是第二个最好的名字是什么? (&.)可能是吗?

2 个答案:

答案 0 :(得分:8)

import Control.Arrow
(>>>) :: (a -> b) -> (b -> c) -> a -> c

实际上,(>>>)比它更通用,因为它适用于任何类别,而不仅仅是(->)函数。但是,它经常用于前向函数合成。

答案 1 :(得分:2)

功能组合是功能应用程序的一种形式。 (.) = (<$>)(<$>)之所以如此命名是因为它通过函子表示函数应用程序(($))。同样,我们有反向函数应用程序(Data.Function.&),也有通过函子(Data.Functor.<&>)实现反向函数应用程序。与(>>>)相比,(<&>)避免了仅Category调用Functor,但是另一方面,它是base的相对较新的补充。