просто ищу объяснение, как работает следующая композиция:
(=<<). return
где
(=<<) :: (a -> m b) -> m a -> m b
return :: a -> m a
(.) :: (b -> c) -> (a -> b) -> a -> c
Окончательный тип:
GHCi> :t (=<<). return
(=<<). return :: Monad m => m b -> m a -> m b
Я не могу понять, как можно сопоставить m a с(а -> м б), т.е. как применить результат return , который является простым типом, к первому аргументу(=<<)ожидаете тип функции?