Здравствуйте, vdimas, Вы писали:
I>>Y-комбинатор это Expression. Ты же показал Statement
V>Анонимную рекурсивную ф-ию создать нельзя.
V>Если нет имени, то как сослаться на такую ф-ию? ))
Ключевое слово — Expression. Если в твоем решении statement, то соответсвенно надо писать мануал по применению присваивания. Иногда присваивание унутре допустимо — для Enumerable, иногда — недопустимо, Queryable, иногда — в зависимости от контекста.
I>>Лямда рекурсивная в виде Expression возможна только и исключительно через Y-комбинатор.
V>Через Y-комбинатор тоже не всегда удобно, бо подаётся не рекурсивная ф-ия, а обычная, но её сигнатура усложняется за счёт протягивания её же.
V>Но так-то получается те же яйца вид в профиль — через имя аргумента стало возможно ссылаться на рекурсивную ф-ию по имени.
Именно — нужно городить огород.
V>Тогда уж можно внутри неименованной лямбды сделать именованную и ву а ля.
V>V>source.Select((int x) => { int fact(int y) => y<2?1:y*fact(y-1); return fact(x); });
V>
V>Ты просил показать без Y-комбинатора?
V>Ну и вот. ))
Цитирую себя "Лямда рекурсивная в виде Expression возможна только и исключительно через Y-комбинатор."
Ты почему то увидел "Y-комбинатор", но забыл про Expression
I>>С твоим подходом придется на ровном месте плодить простыни кода.
V>Поверх целевого кода?
V>Не придётся.
Зачем же ты раз за разом приводишь примеры тех самых простынь ? Вероятно, ты утаиваешь какой то секрет — говоришь, что можно без простынь, но везде примеры про простыни