Есть ли способ избавить боль от упрощения выражения?
Например, учитывая это выражение:
(+) <$> a <*> b $ 1
Мне бы хотелось увидеть инструмент, который бы объяснил, что это значит. Это очень трудоемко для новичков (поиск правильного определения функции экземпляра в источниках, проверка приоритета оператора) для упрощения выражений со всеми задействованными шагами:
fmap (+) a <*> b $ 1
См. определение в Data.Functor
(.) (+) a <*> b $ 1
См. fmap в Control.Monad.Instances
для instance Functor ((->) r)
и т.д.
EDIT: Чтобы уточнить, я ищу способ переписать выражение с использованием фактических определений функций, чтобы новичок мог понять результат этого выражения. Как сказать, что (<$>) = fmap
здесь? Я не знаю, как найти определение конкретного экземпляра (источник) с помощью hoogle
и других инструментов.
EDIT: Изменено неправильное исходное выражение для соответствия следующим сокращениям.