PureScript中的三重小于号(`<<<`)有什么作用?

And*_*rea 4 purescript

我在PureScript程序中看到过这段代码,怎么<<<办?

pinkieLogic :: (Tuple Boolean GameObject) -> GameObject -> GameObject
pinkieLogic (Tuple jumpPressed hater) p =
  hated hater p
  (solidGround
   <<< gravity
   <<< velocity
   <<< jump jumpPressed
   <<< clearSound)
Run Code Online (Sandbox Code Playgroud)

And*_*rea 9

<<<从右到左的作曲运算符.它相当于.Haskell.它的工作原理如下:

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

也就是说,如果你有两个函数1,<<<然后放在那之间,你将得到一个新函数,它调用第一个函数,调用第二个函数的结果.

因此,该代码可以重写如下:

pinkieLogic :: (Tuple Boolean GameObject) -> GameObject -> GameObject
pinkieLogic (Tuple jumpPressed hater) p =
  hated hater p
  (\x -> solidGround (gravity (velocity (jump jumpPressed (clearSound x)))))
Run Code Online (Sandbox Code Playgroud)

[1]与Haskell的.运算符不同,<<<PureScript 也适用于类别或半群.