Господа, а вас не напрягает, что при разработке все время возникает конфликт типов из Nemerle.Collections и System.Collections? Чем типы из Nemerle.Collections лучше стандартных?
Здравствуйте, Visor2004, Вы писали:
V>Господа, а вас не напрягает, что при разработке все время возникает конфликт типов из Nemerle.Collections и System.Collections? Чем типы из Nemerle.Collections лучше стандартных?
Не напрягает (если у вас какая-то проблема, расскажите). Основная причина держать Nemerle.Collections — поддержка .NET 2.0, где нету LINQ-методов, HashSet и еще всякого. Ну, и иммутабельные коллекции.
Здравствуйте, Visor2004, Вы писали:
V>Господа, а вас не напрягает, что при разработке все время возникает конфликт типов из Nemerle.Collections и System.Collections? Чем типы из Nemerle.Collections лучше стандартных?
Нет. В System.Collections лежит жуткий легаси. Забудь про него и используй System.Collections.Generics
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: ICollection vs System.Collections.ICollection
Здравствуйте, catbert, Вы писали:
C>Здравствуйте, Visor2004, Вы писали:
V>>Господа, а вас не напрягает, что при разработке все время возникает конфликт типов из Nemerle.Collections и System.Collections? Чем типы из Nemerle.Collections лучше стандартных?
C>Не напрягает (если у вас какая-то проблема, расскажите). Основная причина держать Nemerle.Collections — поддержка .NET 2.0, где нету LINQ-методов, HashSet и еще всякого. Ну, и иммутабельные коллекции.
Да нет особых каких-то проблем, просто по-умолчанию при создании файла подключаются оба пространства имен и стоит написать в коде, что-то типа ICollection, то компилятор ругается. Просто интересное поведение по-умолчанию, может все-таки не стоит подключать Nemerle.Collections при создании нового файла?
Здравствуйте, Visor2004, Вы писали:
V>Да нет особых каких-то проблем, просто по-умолчанию при создании файла подключаются оба пространства имен и стоит написать в коде, что-то типа ICollection, то компилятор ругается. Просто интересное поведение по-умолчанию, может все-таки не стоит подключать Nemerle.Collections при создании нового файла?
Да я бы там половину юзингов убрал. Nemerle.Text, допустим, зачем?
Re[4]: ICollection vs System.Collections.ICollection
Здравствуйте, catbert, Вы писали:
C>Здравствуйте, Visor2004, Вы писали:
V>>Да нет особых каких-то проблем, просто по-умолчанию при создании файла подключаются оба пространства имен и стоит написать в коде, что-то типа ICollection, то компилятор ругается. Просто интересное поведение по-умолчанию, может все-таки не стоит подключать Nemerle.Collections при создании нового файла?
C>Да я бы там половину юзингов убрал. Nemerle.Text, допустим, зачем?
ну оно по-крайней мере не мешает код писать а вот зачем подключать пространство имен, которое зачастую ведет к ошибкам я не понимаю.
Здравствуйте, Visor2004, Вы писали:
V>ну оно по-крайней мере не мешает код писать а вот зачем подключать пространство имен, которое зачастую ведет к ошибкам я не понимаю.
Это ты, вот сейчас, очень верно подметил! Так может объяснишь зачем подключать System.Collections? Вот какие такие полезные типы в нем имеются, что ты их постоянно используешь?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: ICollection vs System.Collections.ICollection
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Visor2004, Вы писали:
V>>ну оно по-крайней мере не мешает код писать а вот зачем подключать пространство имен, которое зачастую ведет к ошибкам я не понимаю.
VD>Это ты, вот сейчас, очень верно подметил!
сарказм уловил но я разве где-то сказал, что надо по-умолчанию подключать System.Collections? на мой взгляд было бы достаточно подключения System и System.Linq. Изначально-то проблема была в наличии двух конфликтующих пространств имен, и если принимать решение о том, какой из них убрать, то я бы высказался за то, чтобы убрать именно Nemerle.Collections, в котором "лежит жуткий легаси"
VD>Так может объяснишь зачем подключать System.Collections? Вот какие такие полезные типы в нем имеются, что ты их постоянно используешь?
метрики говорят, что у меня в 89% файлах используются типы из System.Collections.Genenric, в основном IEnumerable<T> конечно. Хотелось бы поправиться, в постах выше я везде имел ввиду именно System.Collections.Generic, а не дремучий System.Collections, то я просто неудачно сократил текст
Здравствуйте, Visor2004, Вы писали:
V>сарказм уловил но я разве где-то сказал, что надо по-умолчанию подключать System.Collections? на мой взгляд было бы достаточно подключения System и System.Linq. Изначально-то проблема была в наличии двух конфликтующих пространств имен, и если принимать решение о том, какой из них убрать, то я бы высказался за то, чтобы убрать именно Nemerle.Collections, в котором "лежит жуткий легаси"
А где одни конфликтуют то?
И почему не убрать совершенно не кчемную System.Collections?
VD>>Так может объяснишь зачем подключать System.Collections? Вот какие такие полезные типы в нем имеются, что ты их постоянно используешь?
V>метрики говорят, что у меня в 89% файлах используются типы из System.Collections.Genenric, в основном IEnumerable<T> конечно. Хотелось бы поправиться, в постах выше я везде имел ввиду именно System.Collections.Generic,
Ну, так с System.Collections.Generic, как раз, конфликтов то и нет. Были, но мы их по мере сил вычистили. Если что-то осталось, то давай конкретно по пунктам. Вычистим и их.
V>а не дремучий System.Collections, то я просто неудачно сократил текст
Тогда остается только вопрос — в чем вопрос?
В Nemerle.Collections находится много полезных коллекций и методов расширения. Лично мне они почти всегда нужны. С System.Collections.Generic они не конфилктуют, вроде. А для System.Collections можно и алиас создать:
using CS = System.Collections.Generic;
или вообще открыть только нужный тип.
За последние 4 года мне практически не удавалось нарваться на конфликт.
Давай, лучше, ты приведешь конкретные пример конфликтов. Тогда и подумаем что с ними делать. А просто так удалять этот юснг — не правильно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: ICollection vs System.Collections.ICollection
Здравствуйте, VladD2, Вы писали:
VD>За последние 4 года мне практически не удавалось нарваться на конфликт.
за 4 года не создал ни одной коллекции?
VD>Давай, лучше, ты приведешь конкретные пример конфликтов. Тогда и подумаем что с ними делать. А просто так удалять этот юснг — не правильно.
То что вспомнил сходу:
using Nemerle.Collections;
using Nemerle.Text;
using Nemerle.Utility;
using System;
using System.Collections.Generic;
using System.Console;
using System.Linq;
class TestCollection : ICollection[int]
{
}
module Program
{
Main() : void
{
WriteLine("Hi!");
_ = ReadLine();
}
}
выдает:
Error 1 type name `ICollection' is ambiguous, it could be:
Соответственно все классы, которые имеют свойство типа ICollection[T], тоже начинают парить мозг такими ошибками.
Здравствуйте, VladD2, Вы писали:
VD>Давай, лучше, ты приведешь конкретные пример конфликтов. Тогда и подумаем что с ними делать. А просто так удалять этот юснг — не правильно.
typing fails on ambiguity between overloads:
Posible overload: method System.Linq.Enumerable.Reverse(source : System.Collections.Generic.IEnumerable[TSource]) : System.Collections.Generic.IEnumerable[TSource]
Posible overload: method Nemerle.Collections.NCollectionsExtensions.Reverse(seq : System.Collections.Generic.IEnumerable[T]) : System.Collections.Generic.List[T]
Re[9]: ICollection vs System.Collections.ICollection
И где здесь System.Collections? Это конфликт с System.Collections.Generic. Тут я согласен. Такие конфликты лучше устранять.
Заведи issue. Устраним как будет время. Или можешь даже сам это сделать. Переименуй его в INCollection и сделай пул-реквест.
V>Соответственно все классы, которые имеют свойство типа ICollection[T], тоже начинают парить мозг такими ошибками.
Я вот никогда не использую ICollection[T]. Какой в нем прок?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ICollection vs System.Collections.ICollection
Здравствуйте, xShiFT, Вы писали:
SFT>Я запостил за компанию. Так как тоже конфликт.
SFT>А System.Collections тут совсем не причём. SFT>Тредстартер не удачно сократил. Он уже это говорил. SFT>Он имел ввиду System.Collections.Generic
Если речь о System.Collections.Generic, то тут я согласен. Пересечения с именами из этого пространства имен нужно устранят. Мы просто добавляем букву N к пересекающися именам.
Если вы нашли такую проблему, то заводите isseu по ним. А еще лучше сразу пресылайте пул-реквесты. Только не забывайте прогонять многопроходную компиляцию с тестами (т.е. DevBuildForCommit-4.cmd и DevBuildForCommit.cmd).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ICollection vs System.Collections.ICollection
Здравствуйте, _nn_, Вы писали:
__>А зачем Nemerle.Collections.ICollection нужен ? __>Кроме LinkedList я не нашел его применения.
__>А так все эти методы реализуются через методы расширения.
Погляди на места где он используется. Если их мало или их нет, то можно и грохнуть.
Переименовать точно можно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: ICollection vs System.Collections.ICollection
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _nn_, Вы писали:
__>>А зачем Nemerle.Collections.ICollection нужен ? __>>Кроме LinkedList я не нашел его применения.
__>>А так все эти методы реализуются через методы расширения.
VD>Погляди на места где он используется. Если их мало или их нет, то можно и грохнуть.
VD>Переименовать точно можно.
Тогда и Nemerle.Collections.LinkedList стоит переименовать, ведь есть коллизия с System.Collections.Generic.LinkedList, а также Stack и Queue заодно.
А если MS добавит SCG.Set, то и Set надо переименовывать ?
Вроде бы пространства имен именно и для того, чтобы можно было задавать одинаковые имена в разных пространствах имен.
Или снова тут Закон Дырявых Абстракций ?