Какова связь монад продолжения с Traversables / Observables / Futures в Scala? - PullRequest
0 голосов
/ 20 января 2019

Монада продолжения, если она написана на 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?

...