Что означает символ >> в Haskell

Я читал Пример гостевой книги для Happstack и заметил символ >>, который я раньше не видел в учебниках, которые я изучал, изучите Haskell (например, см. строку 23). Что это?

Я не мог найти его в Google, потому что он полностью игнорирует >> (Bing не придумывает множество не связанных результатов).

Ответы

Ответ 1

В командной строке ghci вы можете ввести:

:info >>

И получите результат вроде:

class Monad m where
...
(>>) :: m a -> m b -> m b
...
        -- Defined in GHC.Base
infixl 1 >>

Оттуда вы можете просто взглянуть на исходный код, чтобы узнать больше.

И только ради ответа на ваш вопрос:

k >> f = k >>= \_ -> f

Ответ 2

Hayoo распознает такой тип оператора: http://holumbus.fh-wedel.de/hayoo/hayoo.html

(>>) похож на (>>=), поскольку он последовательно выполняет два действия, за исключением того, что он игнорирует результат из первого.

Ответ 3

В do-notation

a >> b >> c >> d

эквивалентно

do a
   b
   c
   d

(и аналогично a >>= (b >>= (c >>= d)) эквивалентно

do r1 <- a
   r2 <- b r1
   r3 <- c r2
   d r3

Ответ 4

Я не эксперт Haskell, но >> - это оператор, который используется для работы с монадами, что является необычной особенностью, которая (среди многих других) позволяет программировать в Haskell. На монадах доступно много учебников; здесь один хороший.

По существу, a >> b можно прочитать как "do a, затем сделать b и вернуть результат b". Он похож на более общий оператор связывания >>=.