LINUX.ORG.RU

История изменений

Исправление hateyoufeel, (текущая версия) :

Ключевое слово - корректный. В твоём случае <*> не равно ap. То, что компилятор такие вещи не видит, наверное, не очень хорошо. С другой стороны, эта особенность используется в haxl (хотя, это Марлоу, ему можно).

Оба этих инстанса корректны сами по себе. То, что они не стыкуются для Invalid, это конечно проблема, но не сильно страшная. Про Haxl я в курсе.

Чтобы «запустить» вычисление, в функцию нужно передать аргумент, который можно получить только выполнив предыдущее вычисление. Отсюда и получается, что все вычисления (и их эффекты) следуют строго друг за другом.

Зависит от монады. Если это не IO и подобное, то ты можешь параллелить вычисления слева и справа от >>, если они действительно независимы. GHC даже вроде умеет разбивать вычисления на независимые цепочки.

Исправление hateyoufeel, :

Ключевое слово - корректный. В твоём случае <*> не равно ap. То, что компилятор такие вещи не видит, наверное, не очень хорошо. С другой стороны, эта особенность используется в haxl (хотя, это Марлоу, ему можно).

Оба этих инстанса корректны сами по себе. То, что они не стыкуются для Invalid, это конечно проблема, но не сильно страшная. Про Haxl я в курсе.

Чтобы «запустить» вычисление, в функцию нужно передать аргумент, который можно получить только выполнив предыдущее вычисление. Отсюда и получается, что все вычисления (и их эффекты) следуют строго друг за другом.

Зависит от монады. Если это не IO и подобное, то ты можешь параллелить вычисления слева и справа от >>, если они действительно независимы.

Исходная версия hateyoufeel, :

Ключевое слово - корректный. В твоём случае <*> не равно ap. То, что компилятор такие вещи не видит, наверное, не очень хорошо. С другой стороны, эта особенность используется в haxl (хотя, это Марлоу, ему можно).

Оба этих инстанса корректны сами по себе. То, что они не стыкуются для Invalid, это конечно проблема, но не сильно страшная. Про Haxl я в курсе.

Чтобы «запустить» вычисление, в функцию нужно передать аргумент, который можно получить только выполнив предыдущее вычисление. Отсюда и получается, что все вычисления (и их эффекты) следуют строго друг за другом.

Зависит от монады. Если это не IO и подобное, то ты можешь параллелить вычисления слева и справа от >>.