Ну формально говорю у нас есть функциональная зависимость m -> r. Из m можно однозначно вывести r
Не, ну иногда-то можно, например (+ 1) <$> ask чудесно бы выводился, а вот length <$> ask уже нет
(+ 1) :: Num a => a -> a
Без фандепа каждый новый ask давал бы свой r
И что в этом плохого, кроме возможно не самых лучших сообщений об ошибках? Я бы с удовольствием делал ask @OneConfig, ask @AnotherConfig
Для конкретного типа — выведется по месту использования возвращаемого значения: f :: A -> B ; ask <&> f — здесь компилятору должно всё быть понятно Возникает неясность — ask @a В любом случае, я понял в чём проблема, нашёл решение, всем спасибо
Есть системы эффектов в которых ровно так из коробки и работает
Тем плохо, что аннотировать придётся любой код, даже обобщённый
Обсуждают сегодня