Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
GetPage("http://habrahabr.ru",
x => Translate(x,
y => Display(y)));
var result =
from x in GetPage("www.example.com").ToCont()
from y in Translate(x).ToCont()
from z in Analyse(y).ToCont()
select z;
result(Display);
Async.Do(GetPage('...')).AndThen(Tranlsate).AndThen(Analyze).AndThen(Display);
public static Cont<T> ToCont<T>(this Task<T> task) {
return k => task.ContinueWith(task => k(task.Result));
}var task = Task<int>.Factory.StartNew(() => 10);
var cont = task.ToCont();
Action<int> k = x => Display(x);
cont(k);
//Тут нет никакой рекурсии.
k => task.ContinueWith(task => k(task.Result));// k == Display
//->
task.ContinueWith(task => Display(task.Result))
Linq To Tasks и монада продолжения