История изменений
Исправление hateyoufeel, (текущая версия) :
Ключевое слово - корректный. В твоём случае <*> не равно ap. То, что компилятор такие вещи не видит, наверное, не очень хорошо. С другой стороны, эта особенность используется в haxl (хотя, это Марлоу, ему можно).
Оба этих инстанса корректны сами по себе. То, что они не стыкуются для Invalid, это конечно проблема, но не сильно страшная. Про Haxl я в курсе.
Чтобы «запустить» вычисление, в функцию нужно передать аргумент, который можно получить только выполнив предыдущее вычисление. Отсюда и получается, что все вычисления (и их эффекты) следуют строго друг за другом.
Зависит от монады. Если это не IO и подобное, то ты можешь параллелить вычисления слева и справа от >>
, если они действительно независимы. GHC даже вроде умеет разбивать вычисления на независимые цепочки.
Исправление hateyoufeel, :
Ключевое слово - корректный. В твоём случае <*> не равно ap. То, что компилятор такие вещи не видит, наверное, не очень хорошо. С другой стороны, эта особенность используется в haxl (хотя, это Марлоу, ему можно).
Оба этих инстанса корректны сами по себе. То, что они не стыкуются для Invalid, это конечно проблема, но не сильно страшная. Про Haxl я в курсе.
Чтобы «запустить» вычисление, в функцию нужно передать аргумент, который можно получить только выполнив предыдущее вычисление. Отсюда и получается, что все вычисления (и их эффекты) следуют строго друг за другом.
Зависит от монады. Если это не IO и подобное, то ты можешь параллелить вычисления слева и справа от >>
, если они действительно независимы.
Исходная версия hateyoufeel, :
Ключевое слово - корректный. В твоём случае <*> не равно ap. То, что компилятор такие вещи не видит, наверное, не очень хорошо. С другой стороны, эта особенность используется в haxl (хотя, это Марлоу, ему можно).
Оба этих инстанса корректны сами по себе. То, что они не стыкуются для Invalid, это конечно проблема, но не сильно страшная. Про Haxl я в курсе.
Чтобы «запустить» вычисление, в функцию нужно передать аргумент, который можно получить только выполнив предыдущее вычисление. Отсюда и получается, что все вычисления (и их эффекты) следуют строго друг за другом.
Зависит от монады. Если это не IO и подобное, то ты можешь параллелить вычисления слева и справа от >>
.