Здравствуйте, _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)