Я пытаюсь обернуть мою голову вокруг этого следующий кусок кода:Продолжение Монада Рабочая
ex2 = do
a <- return 1
b <- Cont (\fred -> fred 10)
return $ a + b
ghci > runCont ex2 show
"11"
Как строка «11» выход функции? Я получаю эту часть, что функция show преобразует 10 в String, но тогда как происходит a + b
, поскольку цифры строк не могут суммироваться?
Это может быть даже более освещая включать определение '' >> = и объяснить как 'Cont (\ fred -> fred 10)' равнозначно 'return 10'. –