Продолжение - это особая функция в программе. Монады являются конструкторами типов.
Конструктор типа Cont<T>
для продолжений, принимающих тип T
, не будет монадой.
Тем не менее, Cont<Cont<T>>
- это монада, и это то, что обычно называют «монадой продолжения».
(Наличие callcc на языке эквивалентно возможности конвертировать из Cont<Cont<T>>
в T
.)