Пару месяцев назад достаточно успешно прошел первую часть курса «Функциональное программирование на языке Haskell» от Stepik, недавно взялся за вторую часть, и «сломался» на первом же задании:
В модуле Data.Functor определен оператор <$>, являющийся инфиксным аналогом функции fmap:
GHCi> :info <$>
(<$>) :: Functor f => (a -> b) -> f a -> f b
-- Defined in `Data.Functor'
infixl 4 <$>
В выражении succ <$> "abc" этот оператор имеет тип (Char -> Char) -> [Char] -> [Char]. Какой тип имеет первое (левое) вхождение этого оператора в выражении succ <$> succ <$> "abc"?
Бьюсь над этим вопросом уже, наверное, неделю и уже начинаю себя чувствовать идиотом, но до сих пор так и не нашел правильного ответа даже не смотря на подсказки в обсуждении (
https://stepik.org/lesson/28880/step/4?unit=9912).
Объясните "на пальцах", пожалуйста, как ответить на этот вопрос правильно, и главное — как прийти к правильному ответу. Самооценка и так уже упала ниже плинтуса.