Re[56]: The door
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.07.18 08:03
Оценка:
Здравствуйте, vdimas, Вы писали:

I>>То есть, поскольку C# не умеет такую рекурсию иначе как через Y-комбинатор, следствием является отсутствие внятного реализации CTE.


V>C# умеет обычную рекурсию, этого достаточно.


У тебя не получается эту достаточность продемонстрировать.

I>>То есть, все просто — никто не хочет мучиться, выписывая непойми что.


V>А вот так нет:

V>
V>    Func<int, int> foo = null;

V>    foo = (int k) => {
V>        return k == 1 ? 1 : k + foo(k - 1);
V>    };
V>

V>Хотя видно, что вызова лямбды нет до окончания определения переменной.

Вот я могу такой код писать return source.Where(x=>SomeFilter(x)).Select(x=>SomeProjector(x))
Как твоим методом добавить сюда рекурсивные вызовы ? Не надо тянуть сюда Y-комбинатор, мы уже выяснили, что он плох.

V>Linq генерит теля лямбд.

V>САМ!
V>Хреново генерит.
V>И так во многом в C#.

Может тебе определиться, откуда растут проблемы с рекурсей, из Линка или C#. У тебя, похоже, ответ от настроения зависит. Но если ты настаиваешь, что причины в C#, то я согласен и можно заканчивать.

V>Взять даже банальные IReadOnlyDictionary<>, IReadOnlyollection<>.

V>Не прошло и 10-ти лет как выяснилось, что нужны были именно они в кач-ве интерфейсов, а не IDictionary и не ICollection, которые теперь как гиря на ногах.

Разумеется, все это время менялось понимание парадигдмы.

I>>То есть, тебе понятно, что причина не в LINQ, а в компиляторе ?


V>То есть ты ерунду продолжаешь говорить, сорри.

V>Я уже всё показал, вроде бы.

"И так во многом в C#." @ vdimas

Если это всё, ты пока ничего не показал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.