Монада продолжения, если она написана на Scala, в основном
opaque type Cont[R, +A] = (A => R) => R
Подпись этого типа, (A => R) => R
, подозрительно похожа на foreach
в Traversable
/ Future
и т. Д .:
def foreach[R](f: A => R) => Unit
Если записано в лямбда-форме и предполагается, что R =:= Unit
, это будет (A => Unit) => Unit
, что является продолжением возвращаемого типа Unit
.
Я не до конца понимаю связь здесь: можем ли мы безопасно рассматривать Traversable
/ Observable
s как продолжение, которое допускает функцию обратного вызова A => Unit
?