三重小于号 (`<<<`) 在 PureScript 中有什么作用?
What does the triple less-than sign (`<<<`) do in PureScript?
我在 a PureScript program 中看到过这段代码,<<<
有什么作用?
pinkieLogic :: (Tuple Boolean GameObject) -> GameObject -> GameObject
pinkieLogic (Tuple jumpPressed hater) p =
hated hater p
(solidGround
<<< gravity
<<< velocity
<<< jump jumpPressed
<<< clearSound)
<<<
就是right-to-left composition operator。它相当于 Haskell 中的 .
。它是这样工作的:
(f <<< g) x = f (g x)
也就是说,如果您有两个函数1,然后在它们之间放置 <<<
,您将得到一个新函数,它调用第一个函数并返回结果调用第二个函数。
因此,该代码可以重写如下:
pinkieLogic :: (Tuple Boolean GameObject) -> GameObject -> GameObject
pinkieLogic (Tuple jumpPressed hater) p =
hated hater p
(\x -> solidGround (gravity (velocity (jump jumpPressed (clearSound x)))))
[1] 与 Haskell 的 .
运算符不同,PureScript 中的 <<<
also works on categories or semigroupoids.
我在 a PureScript program 中看到过这段代码,<<<
有什么作用?
pinkieLogic :: (Tuple Boolean GameObject) -> GameObject -> GameObject
pinkieLogic (Tuple jumpPressed hater) p =
hated hater p
(solidGround
<<< gravity
<<< velocity
<<< jump jumpPressed
<<< clearSound)
<<<
就是right-to-left composition operator。它相当于 Haskell 中的 .
。它是这样工作的:
(f <<< g) x = f (g x)
也就是说,如果您有两个函数1,然后在它们之间放置 <<<
,您将得到一个新函数,它调用第一个函数并返回结果调用第二个函数。
因此,该代码可以重写如下:
pinkieLogic :: (Tuple Boolean GameObject) -> GameObject -> GameObject
pinkieLogic (Tuple jumpPressed hater) p =
hated hater p
(\x -> solidGround (gravity (velocity (jump jumpPressed (clearSound x)))))
[1] 与 Haskell 的 .
运算符不同,PureScript 中的 <<<
also works on categories or semigroupoids.