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

Сообщение Re[32]: Есть ли подобие LINQ на других языках/платформах? от 22.04.2021 8:03

Изменено 22.04.2021 8:29 Pauel

Re[32]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Serginio1, Вы писали:

I>>Можешь вписать вместо итд свой пример с монадами

S>Xml там IQueryable на самом то деле. Смотрим исходники https://referencesource.microsoft.com/#System.Xml.Linq/System/Xml/Linq/XLinq.cs,3354dac0913e417b

Сам подумай, что же значит.

S>и считаем количество yield, что только подтверждает мои выводы


Количество yield ничего не значит. IQueryable можно прикрутить поверх чего угодно. А раз так, то это и есть общий случай.

S>Что такое RX и WMI даже я не знаю но наверняка итераторы с yield


Не знаешь, но мнение имеешь. RX еще назывался linq2events.

S>Вернее RX я еще помню по использованию в TS. Но и там yield напрополую используются

S>https://github.com/dotnet/reactive/tree/9f2a8090cea4bf931d4ac3ad071f4df147f4df50/Ix.NET/Source/System.Interactive.Async/System/Linq/Operators

Браво, ты узнал, что Обсервер и Итератор дуальны, а раз так, то можно один сводить к другому.
Ровно то же можно написать и без yield, с таким же количеством кода.
вместо yield a будет observer.next(a)

I>>IQueryable можно натянуть на что угодно, хоть на коллекции, хоть на базу данных. Потому это гораздо больше похоже на общий случай. А вот IEnumerable это просто последовательность, и даже нужды коллекций покрывает не полностью.

S> Кто тебе запрещает писать расширения используя yield?

Ок. Покажи пров для mssql на yield. Валяй.

S>IQueryable это вообще деревья выражений. B и обрабатывать их то еще удовольствие.

S>А yield с парой строчек написал любое расширение!

Покажи пров для mssql на yield. Хотя бы идею выдай.

S> Да но Linq включает IEnumerable и он основной в использовании. Нахрен он тогда нужен.


Ты путаешь "основной" и "общий случай", а так же "yield" и "IEnumerable".

S>Всякое EF и Linq2DB появились значительно позже хотя IQueryable был. Опять же Expression trees никакого отношения не имеют к IEnumerable, однако ты же согласен, что без него не было бы Linq


Без IQueryable не было бы, да. Именно это позволяет прикрутить Linq к чем угодно. А вот yield для BD — хоть раком встань, ничего не выйдет.
Re[32]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Serginio1, Вы писали:

I>>Можешь вписать вместо итд свой пример с монадами

S>Xml там IQueryable на самом то деле. Смотрим исходники https://referencesource.microsoft.com/#System.Xml.Linq/System/Xml/Linq/XLinq.cs,3354dac0913e417b

Сам подумай, что же значит.

S>и считаем количество yield, что только подтверждает мои выводы


Количество yield ничего не значит. IQueryable можно прикрутить поверх чего угодно. А раз так, то это и есть общий случай.

S>Что такое RX и WMI даже я не знаю но наверняка итераторы с yield


Не знаешь, но мнение имеешь. RX еще назывался linq2events.

S>Вернее RX я еще помню по использованию в TS. Но и там yield напрополую используются

S>https://github.com/dotnet/reactive/tree/9f2a8090cea4bf931d4ac3ad071f4df147f4df50/Ix.NET/Source/System.Interactive.Async/System/Linq/Operators

Браво, ты узнал, что Обсервер и Итератор дуальны, а раз так, то можно один сводить к другому.
Ровно то же можно написать и без yield, с таким же количеством кода.
вместо yield a будет observer.next(a)

I>>IQueryable можно натянуть на что угодно, хоть на коллекции, хоть на базу данных. Потому это гораздо больше похоже на общий случай. А вот IEnumerable это просто последовательность, и даже нужды коллекций покрывает не полностью.

S> Кто тебе запрещает писать расширения используя yield?

Ок. Покажи пров для mssql на yield. Валяй.

S>IQueryable это вообще деревья выражений. B и обрабатывать их то еще удовольствие.

S>А yield с парой строчек написал любое расширение!

Покажи пров для mssql на yield. Хотя бы идею выдай.

S> Да но Linq включает IEnumerable и он основной в использовании. Нахрен он тогда нужен.


Ты путаешь "основной" и "общий случай", а так же "yield" и "IEnumerable".

Общий случай, это например когда IQueryable можно распространить на что угодно, просто добавив провайдер. А это значит, что в коде тебе надо просто использовать IQueryable.
А вот с IEnumerable так не получится. А раз так, то это частный случай.

S>Всякое EF и Linq2DB появились значительно позже хотя IQueryable был. Опять же Expression trees никакого отношения не имеют к IEnumerable, однако ты же согласен, что без него не было бы Linq


Без IQueryable не было бы, да. Именно это позволяет прикрутить Linq к чем угодно. А вот yield для BD — хоть раком встань, ничего не выйдет.