Здравствуйте, _NN_, Вы писали:
_NN>Вопрос какой синтаксис выглядит более очевидным ? _NN>В Python ,например, используется: 'yield from x'. _NN>Но в Nemerle мне кажется это может запутать.
Угу. Особенно когда синтаксис linq сможет поддерживаться нормально.
yield from x in seq where x > 0;
yield from from x in seq where x > 0;
_NN>Может быть что-то в стиле: _NN>
_NN>yield ..a;
_NN>
Снова птички. А может yield all? Насколько это коряво будет звучать по английски без from?
Здравствуйте, Ziaw, Вы писали:
Z>Снова птички. А может yield all? Насколько это коряво будет звучать по английски без from?
".." используется в макросе $"..$x" и в квазицитатах <[ {..$x} ]>
Мне кажется логично его заюзать в yield.
Здравствуйте, _NN_, Вы писали:
Z>>Снова птички. А может yield all? Насколько это коряво будет звучать по английски без from? _NN>".." используется в макросе $"..$x" и в квазицитатах <[ {..$x} ]> _NN>Мне кажется логично его заюзать в yield.
Да я понял откуда он взят. Только я например, вижу там не .., а ..$.
_NN>Как показывает личная практика фича нужна.
_NN>Вопрос какой синтаксис выглядит более очевидным ? _NN>В Python ,например, используется: 'yield from x'. _NN>Но в Nemerle мне кажется это может запутать.
_NN>Может быть что-то в стиле: _NN>
Может лучше оставить просто слово yield и пусть сам компилятор проверяет типы и возвращает коллекцию поштучно? А в редком случае когда правильного варианта нет, пусть пользователь распишет foreach? Очередное ключевое слово непонятно зачем для очевидной штуки городить.
Re[2]: foreach + yield
От:
Аноним
Дата:
17.06.13 14:05
Оценка:
Здравствуйте, hi_octane, Вы писали:
_NN>>Есть идеи ?
_>Может лучше оставить просто слово yield и пусть сам компилятор проверяет типы и возвращает коллекцию поштучно? А в редком случае когда правильного варианта нет, пусть пользователь распишет foreach? Очередное ключевое слово непонятно зачем для очевидной штуки городить.
Здравствуйте, hi_octane, Вы писали:
А>>СОГЛАСЕН
_>Главное чтобы неочевидных косяков не осталось, типа:
Ну вот, сейчас yield явно выдает одно значение, а тут вместо одного "случайно" будет последовательность.
Есть конечно хак вида:
Этот случай ошибкой времени компиляции разруливается, так как t приводится к IEnumerable[object] и поэлементно и целиком. А на generic'е временем компиляции не отделаешься.
Здравствуйте, hi_octane, Вы писали:
_>Может лучше оставить просто слово yield и пусть сам компилятор проверяет типы и возвращает коллекцию поштучно? А в редком случае когда правильного варианта нет, пусть пользователь распишет foreach? Очередное ключевое слово непонятно зачем для очевидной штуки городить.
Это очень плохой вариант.
1) Не очевидно. Два совершенно разных по семантике действия выглядят одинаково. Их не отличить друг от друга.
2) Если вдруг какой-то тип начнет реализовывать IEnumerable, какой-то код может сломаться черт знает в каком месте, причем поломка может вылезти только в рантайме.
3) Что если я действительно хочу сделать yield IEnumerable? Одним значением.
Контринтуитивно и совершенно не способствует чтению кода.
Фильтра нет, так что это как бы не many а all. Но люди уже проголосовали, и yieldall никто даже не предложил, так что пили yieldmany. Уж всяко лучше чем какой-нить хитрый восклицательный знак.
Здравствуйте, hi_octane, Вы писали:
_NN>>Добавляем или есть еще предложения ?
_>Фильтра нет, так что это как бы не many а all. Но люди уже проголосовали, и yieldall никто даже не предложил, так что пили yieldmany. Уж всяко лучше чем какой-нить хитрый восклицательный знак.
Мы никуда не спешим, а делать необдуманно нехорошо
Насчет фильтра действительно интересная идея.
Можно сравнить на простом примере , что яснее выражает суть:
yieldall F.Where(_ > 1)
yieldall F.SelectMany(p => p + 1)
// vs.
yieldmany F.Where(_ > 1)
yieldmany F.SelectMany(p => p + 1)
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, ionoy, Вы писали:
I>>yield последовательностей даже в C# частенько просят. Так почему бы в Немерле не добавить?
VD>В компьютейшон-експрешонах используется yieldcomp. Почему бы его не использовать для единообразия?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, catbert, Вы писали:
C>>Лучше yieldcomp заменить на yield.. тогда.
VD>Боюсь, что могут возникнуть проблемы с парсингом.
Точно возникнут ?
Ну и как бы никто не заставляем трогать.
Здравствуйте, _NN_, Вы писали:
C>>>Лучше yieldcomp заменить на yield.. тогда.
VD>>Боюсь, что могут возникнуть проблемы с парсингом.
Лучше чем эти неоднозначные двоеточия yieldcomp или yieldmany. yieldcomp все же в computation expressions назван так из за самих comp expression отсюда comp, но у нас по контексту просто выдача многих, можно yieldmany, но точно не yield.. которое ни о чем не говорит и ничего общего не имеет со сплайсами ..$expr потому что только в сплайсах ..$ точки имеют место.
Предлагаю закрытое голосование. Каждый, кто хочет отметиться, пишет ответ с вариантом за который он голосует. Голоса учитываются только от людей, которые хоть как-то с Немерле используют или использовали.
Через месяц (чтобы все успели прочитать) подводим результаты.
Кроме того синтаксис .. можно будет в будущем применить для других целей и это будет консистентно.
Например синтаксис для раскрытия туплов (когда туплы не будут самораскрываться в будущем )
F(a : int, b : string) : void {}
def x = (1, "a");
// F(x); // сейчас можно так, но лучше бы нельзя было =)
F(..x); // Будущий синтаксис