LINUX.ORG.RU

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

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

Ссылку, не дам. Монада это такой тайпкласс, который приносит одну операцию - bind:

class Monad m where
  (>>=) :: m a -> (a -> m b) -> m b

Как ты видишь из типа, для того, чтобы выполнить действие a -> m b нам необходим результат из a, поэтому чтобы ты не делал выполнял сразу или строил какой план или ещё что, первое действие выполнится до творого. Так везде в IO, ST, Reader, Maybe, ну разве кроме MyBrokenMonad:

instance Monad MyBrokenMonad where _ >>= f = f undefined

В этом отличие от Applicative, в котором нету связи, соответвенно порядка нет, и можно вычислять как угодно с точностью до сохранения семантики.

Не стоит забывать, что мы говорим о вычислительном контексте, который задают структуры данных такие как Maybe, Reader или (->), IO:

  • Reader - вычисление окружением
  • Maybe - вычисление с возможным значением
  • List - вычисление с множественным количеством значений
  • IO - вычисление с произвольными эффектами

В любом из этих контекстов монадическая структура задает порядок.

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

Ссылку, не дам. Монада это такой тайпкласс, который приносит одну операцию - bind:

class Monad m where
  (>>=) :: m a -> (a -> m b) -> m b

Как ты видишь из типа, для того, чтобы выполнить действие a -> m b нам необходим результат из a, поэтому чтобы ты не делал выполнял сразу или строил какой план или ещё что, первое действие выполнится до творого. Так везде в IO, ST, Reader, Maybe, ну разве кроме MyBrokenMonad:

instance MyBrokenMonad m where _ >>= f = f undefined

В этом отличие от Applicative, в котором нету связи, соответвенно порядка нет, и можно вычислять как угодно с точностью до сохранения семантики.

Не стоит забывать, что мы говорим о вычислительном контексте, который задают структуры данных такие как Maybe, Reader или (->), IO:

  • Reader - вычисление окружением
  • Maybe - вычисление с возможным значением
  • List - вычисление с множественным количеством значений
  • IO - вычисление с произвольными эффектами

В любом из этих контекстов монадическая структура задает порядок.