具有反向语法的函数组合

fre*_*low 37 syntax haskell function-composition

如果我想申请f第一和g第二,我必须写:

g . f
Run Code Online (Sandbox Code Playgroud)

是否有另一种标准语法允许我以相反的顺序编写函数?

f <whatever> g
Run Code Online (Sandbox Code Playgroud)

我知道我可以发明自己的语法:

compose f g x = g (f x)
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

f `compose` g
Run Code Online (Sandbox Code Playgroud)

但我宁愿使用标准的库设施.

Jos*_*Lee 44

f >>> g来自Control.Arrow.

  • 我希望这会出现,如果我Hoogled"(a - > b) - >(b - > c) - > a - > c".唉,Hoogle还不够聪明. (4认同)
  • @FredOverflow:`&lt;&lt;&lt;`和`&gt;&gt;&gt;`是为`Category`类定义的,这确实更通用。所有的“箭头”实例都是“类别”实例,包括熟悉的“(-&gt;)”。另一方面,“ Arrow”和“ Category”的全部要点是概括组成端到端匹配类型的事物,就像函数一样,因此您不必太担心“ Arrow” s整个这里。 (2认同)
  • @Daniel Pratt:唉,Hoogle不会将`( - >)`与类型构造函数变量相匹配.它找不到任何东西`(a - > b - > c) - >(a - > b) - > a - > c`. (2认同)
  • @CA McCann:这可能是`(-&gt;)` 在参数重新排序等方面得到特殊处理的结果。它能够泛化其他类型构造函数运算符。 (2认同)