代码之家  ›  专栏  ›  技术社区  ›  nicolas

哈斯克尔自然序函数组成

  •  2
  • nicolas  · 技术社区  · 6 年前

    我们都知道并且从右到左爱/恨作文:

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

    什么是自然/从左到右组合的“最标准”运算符(如某些公共库中的运算符):

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

    它概括了值的常识运算符,被视为 () :

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

    有几个图书馆提供

    附言:如果没有,这类操作员的名字有哪边?在数学中,自然构图经常被写上“;”但第二个最好的名字是什么? (&.) 也许吧?

    2 回复  |  直到 6 年前
        1
  •  8
  •   chi    6 年前
    import Control.Arrow
    (>>>) :: (a -> b) -> (b -> c) -> a -> c
    

    事实上, (>>>) 比这更一般,因为它适用于任何类别,而不仅仅是 (->) 功能。不过,它经常用于前向函数组合。

        2
  •  2
  •   HTNW    6 年前

    函数组合是函数应用的一种形式。 (.) = (<$>) (<$>) 是因为它表示函数应用程序而命名的( ($) )通过一个函数。同样,我们有逆向函数应用程序, (Data.Function.&) ,我们还通过一个函数应用了反函数, (Data.Functor.<&>) . 相比于 (>>>) , (<&>) 避免调用 Category ,只是 Functor 但是,另一方面,它是对 base .