[Haskell] Вопросик по cont monad
От: Пельмешко Россия blog
Дата: 12.01.10 19:09
Оценка:
Доброго вечера всем!

Пожалуйта, помогите понять как de-sugar'ится этот пример к cont monad:
whatsYourName :: String -> String
whatsYourName name =
  (`runCont` id) $ do
    response <- callCC $ \exit -> do
      validateName name exit
      return $ "Welcome, " ++ name ++ "!"
    return response

validateName name exit = do
  when (null name) (exit "You forgot to tell me your name!")

...конкретно интересует вот это место, не могу понять как соединяются эти два вычисления:
    ... -> do
      validateName name exit
      return $ "Welcome, " ++ name ++ "!"

Судя по всему тут действует это правило преобразования do-нотации:
do { e; stmts } = e >> do { stmts }

Если это так, то я не смог найти определения >> для Cont... или в хаскеле есть какая-то обобщённая реализация >> для всех монад? Что-то я совсем запутался...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.