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

I>>Expression это определенные ограничения, которые позволяют легко транслировать код и одновременно внятный конвеншн для сообщества.


V>Чего-чего? ))

V>А можно попунктно по-русски, чтобы было на что предметно отвечать?

Того-того.

I>>Кроме того, лямбда это упрощенный синтаксис и связывание по месту требования.


V>Только не "требования, связываемые по месту", а переменные или их значения (для иммутабельных языков это одно и то же).


"связывание по месту требования" ты прочел как "требования, связываемые по месту"

V>Соответственно, Y-комбинатор является костылём для тех языков, в которых замыкания могут быть только анонимными.

V>Но в C# замыканиям можно давать имя.
V>Поэтому, Y-костыль в C# не нужен.

Попробуй свои примерчики применить на IQueryable.

I>>Есть тут имя или нет, дело абсолютно десятое.

V>Вообще-то, присвоёние сущностям символических имён времени компиляции — это основа основ языков программирования.

V>Просто разные языки обладают разными возможностями.

V>Например, языки, в которых Y-комбинатор необходим, — они обязательно умеют "раскрывать" тела лямбд, иначе вся затея превращается в тыкву.

V>C# не умеет инлайнить тела делегатов, поэтому для него злоупотребление такой техникой является банальной глупостью. Невежеством.


Ну вот ты сам себе ответил еще раз — C# чего то не умеет. Как следствие — Linq этого тоже умеет.

I>>Но вот для рекурсии все становится иначе — и все ради этого самого экспрешна, что бы легко было анализировать, транслировать, выводить тип и тд и тд.


V>И вывод типов в C# лучше работает для неаонимных замыканий.


V>>>Ты глаза-то открой, все подробности спрятаны за неименованой ламбдой.

I>>У тебя стейтмент торчит снаружи

V>Еще раз — стейтмент в том примере спрятан внутри лямбды.


Раскрой глаза — у тебя стейтмент и внутри, и снаружи.

I>>а значит надо писать мануал, какие стейтменты можно/нельзя использовать, и отдельно описать присваивания.

V>Не надо.

Ты попробуй свой вариант для IQueryable применить.

I>>С экспрешном ничего такого делать не надо.


V>Глупости.

V>Non-pure ф-ии в C# не отличимы от pure, поэтому эти два кейза неотличимы.

В огороде бузина, а в Киеве дядька.

I>>Алё! С текущей версией языка ничего лучше недоступно — об чем и речь.


V>Т.е. слил?


Моя цель показать тебе, что все возможные решения приводят к простыням и дополнительным проблемам. Твой код это и есть те самые простыни/проблемы, о которых я говорю.
Разница только в том, что ты считаешь свой подход классным и применимым, а я это считаю ни разу не классным и неприменимым.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.