Re[16]: override Equals: Nemerle-CSharp
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.03.11 09:40
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Суть в том, что раньше компилятор не позволял делать вот это:

H> public Equals(other : Foo) : bool implements IEquatable[Foo].Equals // вот тут он ругался на неоднозначность

Ну, это я вроде исправил.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: override Equals: Nemerle-CSharp
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.03.11 10:07
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Но, справедлливости ради, в F# тоже на реализацию операторов … не сделали в общем :о)) Может быть тоже не сочли важным, редиски. Но МС если и не быстро, но планомерно исправляется в этом плане :о)


А как в F# его сделать? В нем нет макросов. Мы же ведь просто говорим об одном из стандартных макросов.

Отличие Nemerle от F# как раз и заключается в том, что в Nemerle подобные вещи можно реализовать макросом. И если даже нужного макроса нет в стандартной библиотеки, или (как в данном случае) макрос не удовлетворяет потребностям, то всегда можно написать свой макрос который сделает все что надо именно тебе.

Ты ведь не ругаешь C# или F# за то, что в стандартной библиотеке нет тех или иных функций или что имеющиеся функции не делают все что тебе надо?

_FR>Пока только по стаьтьям/книжкам :о)) Ещё ни один язык не возбудил на столько, что бы начать использовать. В F# мне не нравится синтаксис, а в Немерле не соблюдение гудпрактик дотнета: вот в сравнении объектов, в использовании не закрытых, хоть и неизменяемых, но полей, имён в нижнем регистре в публичных членах и прочие такие вот мелочи. Так что пока только принюхиваемся :о)


Это все отмазки. Уверяю тебя, что просто качественно знакомство с ПМ и АлгТД сделает тебя лучше как программиста на каких бы языках ты не работал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: override Equals: Nemerle-CSharp
От: _FRED_ Черногория
Дата: 04.03.11 12:08
Оценка:
Здравствуйте, VladD2, Вы писали:

_FR>>Но, справедлливости ради, в F# тоже на реализацию операторов … не сделали в общем :о)) Может быть тоже не сочли важным, редиски. Но МС если и не быстро, но планомерно исправляется в этом плане :о)

VD>А как в F# его сделать? В нем нет макросов. Мы же ведь просто говорим об одном из стандартных макросов.

Я о том, что имеющиеся там (захардкоженые в компиляторе) рекорды и юнионы так же не реализуют операторов сравнения.

VD>Отличие Nemerle от F# как раз и заключается в том, что в Nemerle подобные вещи можно реализовать макросом. И если даже нужного макроса нет в стандартной библиотеки, или (как в данном случае) макрос не удовлетворяет потребностям, то всегда можно написать свой макрос который сделает все что надо именно тебе.

VD>Ты ведь не ругаешь C# или F# за то, что в стандартной библиотеке нет тех или иных функций или что имеющиеся функции не делают все что тебе надо?

Ещё как ругаю. Там нету ну очень многого. И язык, и библиотеку и много чего ещё. Я, когда мне чего-то не хватает, чего должно быть и не быть этому нет никаких оснований кроме как непродуманность/лень/прочая невынужденная причина становлюсь просто невменяем Ну или начинаю недоумевать, что одно и то же

_FR>>Пока только по стаьтьям/книжкам :о)) Ещё ни один язык не возбудил на столько, что бы начать использовать. В F# мне не нравится синтаксис, а в Немерле не соблюдение гудпрактик дотнета: вот в сравнении объектов, в использовании не закрытых, хоть и неизменяемых, но полей, имён в нижнем регистре в публичных членах и прочие такие вот мелочи. Так что пока только принюхиваемся :о)


VD>Это все отмазки.


Конечно это отмазки, но они не менее и не более необоснованы чем ваши по теме отступления от общепринятых для дотнет норм. Я не вижу ни одной причины, по которым "ПМ и АлгТД" былибы несовместимы (технически) с отсутствие public-полей (и F# это может подтвердить), а менять одну поделку (C#) в котором нет блекджека и клоунов на другую, в котором свои критичные на мой взгляд косяки, мне не интересно.

VD>Уверяю тебя, что просто качественно знакомство с ПМ и АлгТД сделает тебя лучше как программиста на каких бы языках ты не работал.


Не сомневаюсь. Только вот когда очень приспичит я возьму F# потому что он для меня будет более предсказуемым. Потому что обладай я умениями создавать компиляторы, мне было бы стыдно делать компилятор, который создаёт и использует публичные поля (это конечно же частности, но в целом низменность моих запросов надеюсь понятна). Будет очень жаль, что не будет таких полезных макросов, но я смогу это пережить
Help will always be given at Hogwarts to those who ask for it.
Re[17]: override Equals: Nemerle-CSharp
От: para  
Дата: 04.03.11 17:17
Оценка: +1
Здравствуйте, _FRED_, Вы писали:

_FR>Не сомневаюсь. Только вот когда очень приспичит я возьму F# потому что он для меня будет более предсказуемым. Потому что обладай я умениями создавать компиляторы, мне было бы стыдно делать компилятор, который создаёт и использует публичные поля (это конечно же частности, но в целом низменность моих запросов надеюсь понятна). Будет очень жаль, что не будет таких полезных макросов, но я смогу это пережить


я извиняюсь,...

по мне ГЛАВНАЯ прелесть немерле в том что можно сделать ПОЛЕЗНЫЕ макросы САМОМУ. вот этим он лучше шарпа.
можно действительно сделать автоматическое добавление оператора ==
можно сделать макрос, чтобы ПОЛЯ в вариантах оборачивались В СВОЙСТВА
можно сделать чтобы все nullable — параметры автоматически проверялись на NotNull
...

т.е. большую часть проблем можно решить самостоятельно без вмешательства в компилятор по мере надобности
хотя эта тема 1000 раз обсуждалась
Re[17]: override Equals: Nemerle-CSharp
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.03.11 20:53
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Ещё как ругаю. Там нету ну очень многого. И язык, и библиотеку и много чего ещё. Я, когда мне чего-то не хватает, чего должно быть и не быть этому нет никаких оснований кроме как непродуманность/лень/прочая невынужденная причина становлюсь просто невменяем Ну или начинаю недоумевать, что одно и то же


ОК, уломал речистый. Если создашь измененную реализацию макроса добавляющую операторы == и !=, создашь тесты, проконишь их и пришлешь патчь, внесу твои изменения в стандартную библиотеку и твое чувство прекрасного будет удовлетворено.

Задача не сложна. Как раз для знакомства с макрами.

_FR>Конечно это отмазки, но они не менее и не более необоснованы чем ваши по теме отступления от общепринятых для дотнет норм. Я не вижу ни одной причины, по которым "ПМ и АлгТД" былибы несовместимы (технически) с отсутствие public-полей (и F# это может подтвердить), а менять одну поделку (C#) в котором нет блекджека и клоунов на другую, в котором свои критичные на мой взгляд косяки, мне не интересно.


А они совместимы. Просто есть некоторые традиции и вне мира дотнета. Так что если ты захочешь, то можешь именовать поля как тебе нравится.

_FR>Не сомневаюсь. Только вот когда очень приспичит я возьму F# потому что он для меня будет более предсказуемым.


Ну, дык возьми. За чем дело встало то? Про предсказуемость ты (мягко говоря) заблуждаешься, но в процессе освоения ты это как раз и поймешь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: override Equals: Nemerle-CSharp
От: BogdanMart Украина  
Дата: 04.03.11 21:31
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>ОК, уломал речистый. Если создашь измененную реализацию макроса добавляющую операторы == и !=, создашь тесты, проконишь их и пришлешь патчь, внесу твои изменения в стандартную библиотеку и твое чувство прекрасного будет удовлетворено.

Главное чтобы оно могло и не генерировать оператор... все таки есть случаи когда equals определяется, но сравнивать все ровно по ссылке надо часто.
Re[19]: override Equals: Nemerle-CSharp
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.03.11 06:42
Оценка:
Здравствуйте, BogdanMart, Вы писали:

BM>Главное чтобы оно могло и не генерировать оператор... все таки есть случаи когда equals определяется, но сравнивать все ровно по ссылке надо часто.


Кода нужно сравнение по ссылке, то нужно просто привести один из объектов к object или воспользоваться object.ReferenceEquals.

И, если честно, я не помню таких случаев.

Вот что действительно надо сделать, так это не определять операторов, если они уже определены вручную. Иначе макрос поломает работу кода. За одно это будет лазейкой позволяющей изменить поведение операторов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.