Сообщение Re[22]: Есть ли подобие LINQ на других языках/платформах? от 20.04.2021 7:02
Изменено 20.04.2021 7:13 Pauel
Re[22]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Serginio1, Вы писали:
S>>> Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций
I>>Ты путаешь linq и ленивую обработку коллекций. Linq это про соответствующие расширения, которые можно навесить на любой интерфейс, а не только IEnumerable. Более того — совсем необязательно это будет коллекция.
I>>RX, XML, WMI, IQueryable и тд и тд и тд.
Судя по тому, что ты проигнорировал, ты или не понял, что здесь написано, или не согласен.
I>>Т.е. yield это частный случай для IEnumerable. То есть, частный случай частного случая
S> Да но именно yield и создает IEnumerable ленивым. Посмотрим https://github.com/dotnet/runtime/blob/main/src/libraries/System.Linq/src/System/Linq/Where.cs
Ты в любой момент можешь отказаться от вызова MoveNext, а следовательно, IEnumerable сам по себе ленивый, безо всякого yield.
Ты снова путаешь причину и следствие. yield это дешовый способ корректно генерировать IEnumerable. А раз это IEnumerable, то, следовательно, код будет ленивым.
Как по твоему реализовывали ленивые итерации до появления yield? Чудом, магией?
I>>Ты так пишешь.
S>И вот в конце наконец вызвать FirstOrDefault вот она вся прелесть вычислений справо на лево в отличие от твой позиции с вычислением слева направо
IEnumerable в АПИ подразумевает что перформанс не нужен, т.к. ты можешь понаобъединять сколько угодно фильтров-проекций.
Когда важен перформанс, в АПИ не должно быть никаких подобных интерфейсов.
Дальше я повыбрасывал твои куски кода, т.к. ты объясняешь прописные истины. yield я использовал еще с 2008го года. А ты пишешь, как будто лично ты его изобрёл и добавил в язык ажно вчера.
S>На yield построен Linq
S>Непонятно?
Ты привел примеры частного случая. IQueryable гораздо лучше отражает Linq, нежели твой yield.
S>>> Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций
I>>Ты путаешь linq и ленивую обработку коллекций. Linq это про соответствующие расширения, которые можно навесить на любой интерфейс, а не только IEnumerable. Более того — совсем необязательно это будет коллекция.
I>>RX, XML, WMI, IQueryable и тд и тд и тд.
Судя по тому, что ты проигнорировал, ты или не понял, что здесь написано, или не согласен.
I>>Т.е. yield это частный случай для IEnumerable. То есть, частный случай частного случая
S> Да но именно yield и создает IEnumerable ленивым. Посмотрим https://github.com/dotnet/runtime/blob/main/src/libraries/System.Linq/src/System/Linq/Where.cs
Ты в любой момент можешь отказаться от вызова MoveNext, а следовательно, IEnumerable сам по себе ленивый, безо всякого yield.
Ты снова путаешь причину и следствие. yield это дешовый способ корректно генерировать IEnumerable. А раз это IEnumerable, то, следовательно, код будет ленивым.
Как по твоему реализовывали ленивые итерации до появления yield? Чудом, магией?
I>>Ты так пишешь.
S>И вот в конце наконец вызвать FirstOrDefault вот она вся прелесть вычислений справо на лево в отличие от твой позиции с вычислением слева направо
IEnumerable в АПИ подразумевает что перформанс не нужен, т.к. ты можешь понаобъединять сколько угодно фильтров-проекций.
Когда важен перформанс, в АПИ не должно быть никаких подобных интерфейсов.
Дальше я повыбрасывал твои куски кода, т.к. ты объясняешь прописные истины. yield я использовал еще с 2008го года. А ты пишешь, как будто лично ты его изобрёл и добавил в язык ажно вчера.
S>На yield построен Linq
S>Непонятно?
Ты привел примеры частного случая. IQueryable гораздо лучше отражает Linq, нежели твой yield.
Re[22]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Serginio1, Вы писали:
S>>> Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций
I>>Ты путаешь linq и ленивую обработку коллекций. Linq это про соответствующие расширения, которые можно навесить на любой интерфейс, а не только IEnumerable. Более того — совсем необязательно это будет коллекция.
I>>RX, XML, WMI, IQueryable и тд и тд и тд.
Судя по тому, что ты проигнорировал, ты или не понял, что здесь написано, или не согласен.
I>>Т.е. yield это частный случай для IEnumerable. То есть, частный случай частного случая
S> Да но именно yield и создает IEnumerable ленивым. Посмотрим https://github.com/dotnet/runtime/blob/main/src/libraries/System.Linq/src/System/Linq/Where.cs
Ты в любой момент можешь отказаться от вызова MoveNext, а следовательно, IEnumerable сам по себе ленивый, безо всякого yield.
Ты снова путаешь причину и следствие. yield это дешовый способ корректно генерировать IEnumerable. А раз это IEnumerable, то, следовательно, код будет ленивым.
Как по твоему реализовывали ленивые итерации до появления yield? Чудом, магией?
I>>Ты так пишешь.
S>И вот в конце наконец вызвать FirstOrDefault вот она вся прелесть вычислений справо на лево в отличие от твой позиции с вычислением слева направо
IEnumerable в АПИ подразумевает что перформанс не нужен, т.к. ты можешь понаобъединять сколько угодно фильтров-проекций.
Когда важен максимальный перформанс вычислений, в АПИ не должно быть никаких подобных интерфейсов.
Дальше я повыбрасывал твои куски кода, т.к. ты объясняешь прописные истины. yield я использовал еще с 2008го года. А ты пишешь, как будто лично ты его изобрёл и добавил в язык ажно вчера.
S>На yield построен Linq
S>Непонятно?
Ты привел примеры частного случая. IQueryable гораздо лучше отражает Linq, нежели твой yield.
S>>> Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций
I>>Ты путаешь linq и ленивую обработку коллекций. Linq это про соответствующие расширения, которые можно навесить на любой интерфейс, а не только IEnumerable. Более того — совсем необязательно это будет коллекция.
I>>RX, XML, WMI, IQueryable и тд и тд и тд.
Судя по тому, что ты проигнорировал, ты или не понял, что здесь написано, или не согласен.
I>>Т.е. yield это частный случай для IEnumerable. То есть, частный случай частного случая
S> Да но именно yield и создает IEnumerable ленивым. Посмотрим https://github.com/dotnet/runtime/blob/main/src/libraries/System.Linq/src/System/Linq/Where.cs
Ты в любой момент можешь отказаться от вызова MoveNext, а следовательно, IEnumerable сам по себе ленивый, безо всякого yield.
Ты снова путаешь причину и следствие. yield это дешовый способ корректно генерировать IEnumerable. А раз это IEnumerable, то, следовательно, код будет ленивым.
Как по твоему реализовывали ленивые итерации до появления yield? Чудом, магией?
I>>Ты так пишешь.
S>И вот в конце наконец вызвать FirstOrDefault вот она вся прелесть вычислений справо на лево в отличие от твой позиции с вычислением слева направо
IEnumerable в АПИ подразумевает что перформанс не нужен, т.к. ты можешь понаобъединять сколько угодно фильтров-проекций.
Когда важен максимальный перформанс вычислений, в АПИ не должно быть никаких подобных интерфейсов.
Дальше я повыбрасывал твои куски кода, т.к. ты объясняешь прописные истины. yield я использовал еще с 2008го года. А ты пишешь, как будто лично ты его изобрёл и добавил в язык ажно вчера.
S>На yield построен Linq
S>Непонятно?
Ты привел примеры частного случая. IQueryable гораздо лучше отражает Linq, нежели твой yield.