我在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)
<<<是从右到左的作曲运算符.它相当于.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 也适用于类别或半群.