class A[T] : IEnumerable, IEnumerable[T]
{
public GetEnumerator() : IEnumerator[T]
implements IEnumerable[T].GetEnumerator
{
null;
}
public GetEnumerator() : IEnumerator
implements IEnumerable.GetEnumerator
{
null;
}
}
Error: attempted return type overload on method A.GetEnumerator() : System.Collections.IEnumerator and method A.GetEnumerator() : System.Collections.Generic.IEnumerator[T]
Error: type name 'IEnumerable' is ambiguous, it could be:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll(0,0):Warning: hint: first possible type: 'System.Collections.Generic.IEnumerable.[T]'
C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll(0,0):Warning: hint: second possible type: 'System.Collections.IEnumerable'
Вторая попытка
class A[T] : System.Collections.IEnumerable,
System.Collections.Generic.IEnumerable[T]
{
public GetEnumerator() : System.Collections.Generic.IEnumerator[T]
implements System.Collections.Generic.IEnumerable[T].GetEnumerator
{
null;
}
public GetEnumerator() : System.Collections.IEnumerator
implements System.Collections.IEnumerable.GetEnumerator
{
null;
}
}
Error: attempted return type overload on method A.GetEnumerator() : System.Collections.IEnumerator and method A.GetEnumerator() : System.Collections.Generic.IEnumerator[T]
Если оставить только IEnumerable или IEnumerable[T] то работает.
Как заставить работать ?
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, _nn_, Вы писали:
__>>Как заставить работать ?
N>Насколько я помню, Nemerle позволяет дать любое имя методу, реализующему интерфейсный метод. Таким образом, надо просто дать им разные имена.
Работает.
class A[T] : System.Collections.IEnumerable,
System.Collections.Generic.IEnumerable[T]
{
public GetEnumeratorGeneric() : System.Collections.Generic.IEnumerator[T]
implements System.Collections.Generic.IEnumerable[T].GetEnumerator
{
null;
}
public GetEnumerator() : System.Collections.IEnumerator
implements System.Collections.IEnumerable.GetEnumerator
{
null;
}
}
Все же похоже что есть баг или это by-design ?
А так уже нет:
class A[T] : IEnumerable,
IEnumerable[T]
{
public GetEnumeratorGeneric() : IEnumerator[T]
implements IEnumerable[T].GetEnumerator
{
null;
}
public GetEnumerator() : IEnumerator
implements IEnumerable.GetEnumerator
{
null;
}
}
Error: type name 'IEnumerable' is ambiguous, it could be:
C# без проблем понимает, а Nemerle никак. Баг или by-design ?
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, _nn_, Вы писали:
__>>Все же похоже что есть баг или это by-design ?
N>А что говорит спецификация Nemerle по этому поводу? Ну, та самая, которую не нашёл Хейлсберг.
Вопрос с подколом
На самом деле, да нужна спецификация.
Т.е. если кто-то может писать сейчас, это было бы круто.
Все же приоритетней , как мне кажется , это довести интеграцию и компилятор до ума, чтобы дать возможность большому количеству людей попрользоваться языком.
А далее, в рамках Nemerle 2 уже создать спецификацию и все необходимое для Хейлсберга .
Здравствуйте, _nn_, Вы писали:
__>Все же приоритетней , как мне кажется , это довести интеграцию и компилятор до ума, чтобы дать возможность большому количеству людей попрользоваться языком. __>А далее, в рамках Nemerle 2 уже создать спецификацию и все необходимое для Хейлсберга .
Ну конечно, сначала дом построим, чтобы было где жить, а уж потом план начертим.
Ну вообще IEnumerable уже реализуется IEnumerable[T]...
А проблема никак не связана с отсутствием поддержки ковариантных интерфейсов (невозможностью реализовать IEnumerable[int] и IEnumerable[string] в одном классе)?
Error: unimplemented interface method System.Collections.IEnumerable.GetEnumerator() : System.Collections.IEnumerator (in A type)
H>А проблема никак не связана с отсутствием поддержки ковариантных интерфейсов (невозможностью реализовать IEnumerable[int] и IEnumerable[string] в одном классе)?
Я не силен в компиляторе. Может и связанна.
Здравствуйте, nikov, Вы писали:
__>>А далее, в рамках Nemerle 2 уже создать спецификацию и все необходимое для Хейлсберга . N>Ну конечно, сначала дом построим, чтобы было где жить, а уж потом план начертим.
Справедливости ради, много вполне популярных языков вообще десятилетиями живут без спецификаций.
Здравствуйте, Воронков Василий, Вы писали:
__>>>А далее, в рамках Nemerle 2 уже создать спецификацию и все необходимое для Хейлсберга . N>>Ну конечно, сначала дом построим, чтобы было где жить, а уж потом план начертим.
ВВ>Справедливости ради, много вполне популярных языков вообще десятилетиями живут без спецификаций.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>>>Справедливости ради, много вполне популярных языков вообще десятилетиями живут без спецификаций. N>>Например?
ВВ>Ну Руби, например. Или Питон.
Ну а когда они появились (причем еще не факт, что появились) и сколько лет эти языки жили без спецификаций?
Потом ссылка, которую ты привел на Питон, это не спецификация, а Language Reference — все же вещи не совсем чтобы одинаковые.
Здравствуйте, _nn_, Вы писали:
__>C# без проблем понимает, а Nemerle никак. Баг или by-design ?
Это бай-дизайн, но в дизайне баг.
В принципе можно разруливать типы в таких случаях, но это не просто. Немерле позволяет жить без указания параметров типов. В большинстве случаев это работает отлично. Но если есть вот такие пересечения, то происходит сбой.
Если докрутить анализ добавив в него эвристику "Если есть два типа-кандидата среди которых есть кандидат без параметров типа, то выбирать его для выражений в которых не указаны параметры типов.", то подобный код будет компилироваться.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Если докрутить анализ добавив в него эвристику "Если есть два типа-кандидата среди которых есть кандидат без параметров типа, то выбирать его для выражений в которых не указаны параметры типов.", то подобный код будет компилироваться.
В общем, напиши фича-реквест. Будет время, реализую.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, nikov, Вы писали:
N>А что говорит спецификация Nemerle по этому поводу? Ну, та самая, которую не нашёл Хейлсберг.
Ты лучше бы не подкалывал, а помог ее написать. На все вопросы (если сам не сможешь ответить) я тебе помогу ответить.
Ты с такой задачей справишся наилучшим образом. Я не столь педантичен, так что точно накосячу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
N>>Ну конечно, сначала дом построим, чтобы было где жить, а уж потом план начертим.
VD>Лучше уж так чем как с Шарпом (где и дом кривой, и плат).
Смотря для каких целей. Неужели ты думаешь, что тот факт, что в мире .NET в продакшене повсеместно используются C# и VB.NET (а в разработку инструментов для работы с ними вкладываются десятки миллионов долларов ежегодно), а Nemerle используется только на нескольких проектах — это только следствие тупости и недальновидности менеджмента, принимающего такое решение?
Здравствуйте, VladD2, Вы писали:
VD>Ты лучше бы не подкалывал, а помог ее написать. На все вопросы (если сам не сможешь ответить) я тебе помогу ответить. VD>Ты с такой задачей справишся наилучшим образом. Я не столь педантичен, так что точно накосячу.
Немерле мне нравится, но всё-таки, это не тот язык, ради развития которого я был бы готов прикладывать значительные усилия только из энтузиазма.
Здравствуйте, nikov, Вы писали:
N>Смотря для каких целей. Неужели ты думаешь, что тот факт, что в мире .NET в продакшене повсеместно используются C# и VB.NET (а в разработку инструментов для работы с ними вкладываются десятки миллионов долларов ежегодно), а Nemerle используется только на нескольких проектах — это только следствие тупости и недальновидности менеджмента, принимающего такое решение?
Нет конечно. Я думаю, что люди жрут колбасу из сои, мороженное из сухого молока и масла, пользуются шампунями от которых кожа покрывается красными пятнами и Завераксами содержащими то же действующее вещество что и в Ацикловире (ацикловир) но стоящем в 10 раз дороже потому что они умные и делают свой выбор обдуманно не взирая на терробаксы вкладываемые в рекламу.
Если серьезно, то это вопрос многофакторный. C# живет за счет: маркетинга MS, малой осведомленности людей, боязни людей использовать что-то не сделанное именитым производителем и за счет того, что MS таки вкладывает миллионы долларов (а то и больше) ежегодно в инфраструктуру вокруг C#-а, а в Nemerle время урываемое ото сна горсткой людей.
И у меня нед ни тени сомнения, что если бы в MS решили поддержать Nemerle, то дни C# были бы сочтены (даже если его финансирование, при этом, увеличить в три раза).
Вот только именно по этому в MS никогда не поддержат Nemerle. Слишком много именитых людей останется не удел.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, nikov, Вы писали:
N>Немерле мне нравится, но всё-таки, это не тот язык, ради развития которого я был бы готов прикладывать значительные усилия только из энтузиазма.
Здравствуйте, nikov, Вы писали:
N>Немерле мне нравится, но всё-таки, это не тот язык, ради развития которого я был бы готов прикладывать значительные усилия только из энтузиазма.
А C# это тот язык? Какой смысл в ковырянии потрохов его спецификации?
Собственно тебя никто не просит заниматься разработкой Nemerle, но вместо того чтобы с завидной переодичностью заходить на сайт и тюкать отсутствием спецификации ты бы ведь мог бы просто взять иногда добавить пару строчек в немерловой вики?
ЗЫ
Интересно, а что нужно чтобы язык стал "тем"? Не уж то патронаж MS?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, nikov, Вы писали:
N>Смотря для каких целей. Неужели ты думаешь, что тот факт, что в мире .NET в продакшене повсеместно используются C# и VB.NET (а в разработку инструментов для работы с ними вкладываются десятки миллионов долларов ежегодно), а Nemerle используется только на нескольких проектах — это только следствие тупости и недальновидности менеджмента, принимающего такое решение?
Это вообще очень тонкая тема. Вот Хаскель, к примеру, на мой взгляд чуть ли не лучший язык в плане дизайне — чем больше читаю о нем, тем больше поражаюсь цельности, так сказать, "чистоте" концепции. Но вот пишут на нем мало почему-то. А почему? Дизайн вроде хорошо
Или взять для контраста PHP какой-нибудь (а у него, кстати, есть спецификация? никогда не интересовался). Язык, который вообще развивался хаотично, от "шаблонизатора" до class based OOP. Вообще хоть какую-то концепцию в нем проследить сложно. Но ведь пишут на нем?
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Это вообще очень тонкая тема. Вот Хаскель, к примеру, на мой взгляд чуть ли не лучший язык в плане дизайне — чем больше читаю о нем, тем больше поражаюсь цельности, так сказать, "чистоте" концепции. Но вот пишут на нем мало почему-то. А почему? Дизайн вроде хорошо
ВВ>Или взять для контраста PHP какой-нибудь (а у него, кстати, есть спецификация? никогда не интересовался). Язык, который вообще развивался хаотично, от "шаблонизатора" до class based OOP. Вообще хоть какую-то концепцию в нем проследить сложно. Но ведь пишут на нем?
Тут скорее вопрос вхождения в профессию а также привычка привитая "с пеленок".
Если человека изначально обучать программированию на функциональном языке, то понятное дело, Хаскель ему будет удобен и понятен. В подавляющем же большинстве случаев у нас с чего начинают обучать? То-то же.