Что делает в PureScript тройное «меньше» (`‹--------------------------------`)?

Я видел этот код в программе PureScript, что делает <<<?

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

person Andrea    schedule 26.04.2015    source источник


Ответы (1)


<<< - это оператор композиции с направлением справа налево . Это эквивалент . в 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 также работает с категориями или полугруппоидами.

person Andrea    schedule 26.04.2015