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

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

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

10
задан Keith Pinson 12 November 2014 в 19:03
поделиться

4 ответа

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

:info >>

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

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

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

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

k >> f = k >>= \_ -> f
11
ответ дан 3 December 2019 в 13:37
поделиться

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

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

1
ответ дан 3 December 2019 в 13:37
поделиться

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

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

17
ответ дан 3 December 2019 в 13:37
поделиться

В do-нотации

a >> b >> c >> d

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

do a
   b
   c
   d

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

do r1 <- a
   r2 <- b r1
   r3 <- c r2
   d r3
15
ответ дан 3 December 2019 в 13:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: