Я пытаюсь обвести голову вокруг того, как работает Haskell Control.Arrow
&&&
, но боюсь, что я на пороге теряя мой путь.
В частности, я запутался (как новичок) в том, как понять его поведение от сигнатуры типа
(&&&) :: a b c -> a b c' -> a b (c, c')
в
import Control.Arrow
(negate &&& (+5)) <$> [1,2,3]
или даже просто
(negate &&& (+5)) 5
например, первый аргумент "отсутствует" b
и c
, а второй отсутствует только c'
, и результат выглядит мне как (c, c')
, а не a b (c, c')
.
Может ли кто-нибудь пропустить меня, как работает &&&
в контексте его типа?