Вопрос про sequecne of T

Почему нельзя писать вот так:

type
  TSequence<T> = sequence of T;

function P<T>(): TSequence<T>;
begin
  yield new T[0];
end;

begin
end.

? TSequence это же просто синоним sequence of T. Может, все-таки стоит разрешить это, как и использование System.Collections.Generic.IEnumerable<T>?

1 лайк

А где оно нужно?

1 лайк

А сначала разрешить, потом придумают, где нужно. Может быть. ))))

1 лайк

Главное, чтобы не наоборот. :smile:

Я бы как раз наоборот предпочел. Докажите разработчикам, что оно реально нужно - они рассмотрят. Я за все время присутствия тут ни разу не сталкивался с тем, чтобы если мне удалось убедить разработчиков, что “это” полезно, они бы не приняли эту идею. Не все пока реализовано - это да, но они тоже люди и у них свои причины и своя голова есть.

1 лайк

Я не то имел ввиду. Я имел ввиду, что иногда запрещают что - то, а потом коллективно думают, зачем это сделали :slight_smile:

А кто доказал им, что тип sequence of T реально нужен? Или это было сугубо их решение? Почему сделали его, а не оставили IEnumerable<T>? Или это, как я понимаю, сделали для упрощения обучения последовательностям начинающих?

Это сделали, чтобы семиклассникам не преподавать коллекции .NET и не учить их работе в C#.

Хорошо. Вопрос. А была ли возможность когда-нибудь пользоваться IEnumerable<T> напрямую?

Понятия не имею; более того, мне это абсолютно неинтересно. У меня есть PascalABC.NET и есть sequence of T (а также прямой доступ к другим НЕТ коллекциям) с офигенным функционалом. Который я в любой момент могу развить, если мне забожается. И, заметьте, без всех этих плясок с поискам по библиотекам и обсасывания MSDN.

1 лайк

Посмотрел в Что нового: [15.05.15] Реализован тип sequence of T как синоним типа IEnumerable<T>. Значит, как я понял, до этого момента доступ был напрямую. Но если это так, то почему после этого он закрылся? Что мешало просто добавить новый (sequence of T), сохранив старый - IEnumerable<T>?

Так он и остался.

Просто восприятие изменилось.

Теперь это не интерфейс, а последовательность.

Не вполне так. Мы передрали эту идею из замечательного проекта Oxygene (язык программирования) . https://www.elementscompiler.com/elements/oxygene/ Отсюда: https://www.elementscompiler.com/elements/oxygene/language.aspx#sequences

Жаль, следующая за sequence строка (var byLength := from n in Names order by n.Length;) Вас не впечатлила в Oxygene. Все же синтаксис SQL десятилетиями шлифовался и SELECT дошел до весьма высокого уровня выборки данных.

А не хотите “передрать” модификаторы доступа для типов? Уже говорили вроде, что они нужны.

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

1 лайк

Безусловно. Только сообщество тут сейчас пока подобралось очень узкое и его большая часть не интересуется языком, как средством для обучения. “Сообществу”, если по постам судить, гораздо интереснее пытаться протолкнуть очередную штучку, чтобы два раза в своей жизни ей воспользоваться.

@Admin, много ли из Ваших студентов интересуется языком PascalABC.Net как я языком для обучения?

Пока Вам не ответили, я рискну предположить, что все. Поскольку на базе этого языка в ЮФУ читается учебный курс. Плюс, ежегодно, как уже сообщал @Admin, им в одной только школе при ЮФУ пользуются 300 школьников. Плюс, количество скачиваний PascalABC.NET давно перевалило за миллион. Вы думаете, его скачивают, чтобы делать коллективные проекты?

1 лайк

Я не могу этого и отрицать. Но по большей части, скорее всего, PascalABC.Net используется как инструмент личного пользования.