Linq.Expressions
От: IT Россия linq2db.com
Дата: 22.04.16 18:35
Оценка:
Нужны ли расширялки для манипулирования сабжем вроде таких?

Область применения обход, поиск в, трансформация деревьев выражений вплоть до псевдо квази цитирования.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Linq.Expressions
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 22.04.16 18:42
Оценка:
Здравствуйте, IT, Вы писали:

IT>Нужны ли расширялки для манипулирования сабжем вроде таких?

IT>Область применения обход, поиск в, трансформация деревьев выражений вплоть до псевдо квази цитирования.

В принципе не помешают, если убрать всю специфику linq2db.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re: Linq.Expressions
От: Sinix  
Дата: 22.04.16 22:24
Оценка:
Здравствуйте, IT, Вы писали:

IT>Нужны ли расширялки для манипулирования сабжем вроде таких?


IT>Область применения обход, поиск в, трансформация деревьев выражений вплоть до псевдо квази цитирования.


Я бы добавлял в CodeJam.Main только универсальные вещи. Т.е. то, что не относится к обходу дерева и к написанию linq-провайдера. Для большинства пользователей оно само по себе не нужно абсолютно и используется только как часть тулкита аля linq extender или re-linq.
Ну и не забываем про ExpressionVisitor из фреймворка, с ним конкурировать простым хелперам тяжеловато
Re[2]: Linq.Expressions
От: IT Россия linq2db.com
Дата: 23.04.16 23:59
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Я бы добавлял в CodeJam.Main только универсальные вещи. Т.е. то, что не относится к обходу дерева и к написанию linq-провайдера. Для большинства пользователей оно само по себе не нужно абсолютно и используется только как часть тулкита аля linq extender или re-linq.


Для большинства пользователей не нужно большинство фич CodeJam. Я вот пока смог применить от силы несколько процентов.

S>Ну и не забываем про ExpressionVisitor из фреймворка, с ним конкурировать простым хелперам тяжеловато


С этой тяжеловесной хернёй (простите мне мой французский) никто конкурировать не собирается.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Linq.Expressions
От: Sinix  
Дата: 24.04.16 07:49
Оценка:
Здравствуйте, IT, Вы писали:


IT>Для большинства пользователей не нужно большинство фич CodeJam. Я вот пока смог применить от силы несколько процентов.

Уже обсудил
Автор: AndrewVK
Дата: 23.04.16
этот момент с Андреем, довод про "не включаем, т.к. мало кому надо" не катит.

S>>Ну и не забываем про ExpressionVisitor из фреймворка, с ним конкурировать простым хелперам тяжеловато

IT>С этой тяжеловесной хернёй (простите мне мой французский) никто конкурировать не собирается.
Ну и ок тогда.

Оффтоп: есть идеи, чего делать с методами, позаимствоваными из STL
Автор: Sinix
Дата: 18.04.16
? Я несколько вариантов предложил, ув. Lexey считает, что они не подходят, оставляем как есть?
Re[4]: Linq.Expressions
От: IT Россия linq2db.com
Дата: 24.04.16 16:27
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Оффтоп: есть идеи, чего делать с методами, позаимствоваными из STL
Автор: Sinix
Дата: 18.04.16
? Я несколько вариантов предложил, ув. Lexey считает, что они не подходят, оставляем как есть?


Если вещь полезная, по почему бы и не.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Linq.Expressions
От: Sinix  
Дата: 24.04.16 17:22
Оценка:
Здравствуйте, IT, Вы писали:


IT>Если вещь полезная, по почему бы и не.


Ты тему прочитай

Проблема в том, что текущий дизайн выглядит странно с точки зрения неподготовленного пользователя и сильно лучше его сделать не получается.
Варианты предлагал — не подошли.
Отказываться тож не хочется, вещь полезная.

Главный затык сейчас с именами методов LowerBound/UpperBound/EqualRange/PartitionPoint.

Вот что про них известно:
* список должен быть отсортирован
* LowerBound — первый индекс в списке, для которого значение >= переданного значения, условное название — IndexFrom
* UpperBound — первый индекс в списке, для которого значение > переданного значения, условное название — IndexTo
* EqualRange — пара из LowerBound + UpperBound, условное название — IndexesFromTo
* PartitionPoint — первый индекс в списке, для которого предикат становится False. условное название — IndexToWhere

Собственно что надо отразить в названии:
* все 4 метода решают один и тот же сценарий, но слегка по-разному, из имени должно быть понятно зачем он нужен.
* методы имеют смысл только для отсортированных коллекций.

Вроде бы ничего не упустил.
Re: Linq.Expressions
От: Sinix  
Дата: 29.04.16 05:53
Оценка:
Здравствуйте, IT, Вы писали:

IT>Нужны ли расширялки для манипулирования сабжем вроде таких?


Вопрос по свежедобавленному ExpressionExtensions
У нас есть CodeJam.Reflection.ExpressionHelper, надо бы или слить,
UPD
или как минимум перенести в ExpressionExtensions файл ExpressionHelper.Func.tt — фигню написал, код хуже становится
  var expression1 = ExpressionHelper.Func((int a) => Enumerable.Repeat(a, a));

// станет

  var expression1 = ExpressionExtensions.Func((int a) => Enumerable.Repeat(a, a));

Может, методы Func() и Action() вообще в Expr вынести, по аналогии с CodeJam.Fn?


2All: Если есть идеи лучше — велкам!

В идеале это надо бы сделать до релиза, иначе будем сразу 2.0 следом выпускать.
Отредактировано 29.04.2016 5:59 Sinix . Предыдущая версия .
Re[2]: Linq.Expressions
От: Jack128  
Дата: 29.04.16 07:14
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Может, методы Func() и Action() вообще в Expr вынести, по аналогии с CodeJam.Fn?


У Expr странное описание, не :

    /// <summary>
    /// Provides a helper class to get the property, field, ctor or method from an expression.
    /// </summary>
    public static class Expr
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.