Информация об изменениях

Сообщение Re[58]: The door от 20.07.2018 9:45

Изменено 20.07.2018 9:46 vdimas

Re[58]: The door
Здравствуйте, Ikemefula, Вы писали:

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


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


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


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

В общем случае это называется замыканием.
Т.е. анонимные лямбды уместы только там, где на такое замыкание не надо ссылаться по имени.

Соответственно Y-комбинатор является костылём для тех языков, в которых замыкания могут быть только анонимными.
Но в C# замыканиям можно давать имя.
Поэтому, Y-костыль в C# не нужен.


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


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

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

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


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


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


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

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

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


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


Не надо.


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


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


I>>>Зачем же ты раз за разом приводишь примеры тех самых простынь ?

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

Т.е. слил?
Re[58]: The door
Здравствуйте, Ikemefula, Вы писали:

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


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


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


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

В общем случае это называется замыканием.
Т.е. анонимные лямбды уместы только там, где на такое замыкание не надо ссылаться по имени.

Соответственно, Y-комбинатор является костылём для тех языков, в которых замыкания могут быть только анонимными.
Но в C# замыканиям можно давать имя.
Поэтому, Y-костыль в C# не нужен.


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


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

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

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


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


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


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

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

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


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


Не надо.


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


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


I>>>Зачем же ты раз за разом приводишь примеры тех самых простынь ?

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

Т.е. слил?