Они вообще не связаны.
seq
имеет тип:
seq :: a -> b -> b
Используется (как seq a b
или a `seq` b
) для оценки a
, чтобы возглавить нормальную форму, что является странным способом сказать, что оно заставляет ленивое значение a
быть немного оцененным.Это не имеет ничего общего с монадами.
>>=
- для секвенирования монад.Он имеет тип:
(>>=) :: Monad m => m a -> (a -> m b) -> m b
Он используется для получения значения из монадического значения и передачи его функции, которая возвращает другое монадическое значение.По сути, что-то вроде:
getLine >>= putStrLn
, который получит строку ввода из командной строки, а затем выведет ее на печать.
Так что, по сути, никакого отношения вообще нет.