2016-05-21 2 views
2

Как правило, что именно происходит, когда мы рисуем от Nothing в конструкции ? Чтобы проиллюстрировать мое замешательство: почему do {x <- Just 1; y <- Nothing; return x} производит Nothing?Что происходит, когда вы рисуете из ничего?

+0

В монадии «Может быть» ничего не происходит из ничего ». Когда вы связываете кучу монадических значений, как только один из них терпит неудачу (это «Ничто»), вся цепочка терпит неудачу. – chi

+6

Ничего не происходит. –

ответ

9

Ваш do блок обессахаренная в:

Just 1 >>= (\x -> Nothing >>= (\y -> return x)) 

Если вы посмотрите на definition of (>>=) для Может быть:

(Just x) >>= k  = k x 
Nothing >>= _  = Nothing 

вы можете увидеть, что Nothing >>= (\y -> return x) возвращает Nothing и что Just 1 >>= (\x -> Nothing) также Nothing.

Смежные вопросы