Re[3]: Предлагаю подобрать скобки для типов...
От: konstardiy  
Дата: 30.12.09 10:18
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, konstardiy, Вы писали:


K>>Возможность укзать явно, для каких аргументов генерика какой тип принять — мне нравится.


N>А может быть, сразу, и значения по умолчанию приделать...

Ага, типа после констреинтов на тип писать
default <DesiredDefaultNonAbstractCreatableType>;
Re[3]: Предлагаю подобрать скобки для типов...
От: konstardiy  
Дата: 30.12.09 10:22
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, konstardiy, Вы писали:


K>>Здравствуйте, VladD2, Вы писали:

K>>
K>>List :( T = Type1 )

K>>List : (Type1)
K>>


H>Эстетически выглядит плохо — как грустный "смайлик".


K>>или

K>>
K>>Dictionary @ (KeyT = Type1 & ValueT = Type2)
K>>Dictionary @(Type1, type2)
K>>


H>С "собакой" получще, но квадратные скобки привычнее, по крайней мере со смайлами не ассоциируется....



H>А может заюзать подчеркивание? Оно глаза не так мозолит, как разные, в сущности мусорные, символы?


H>Dictionary_[Type1, type2]


А еще в Nemerle это целая конструкция языка (дюбой вариант).
можно конечно вообще
T with {T1};//объявление
T with (DesiredType); //указание аргумента
Re[4]: Предлагаю подобрать скобки для типов...
От: hardcase Пират http://nemerle.org
Дата: 30.12.09 19:23
Оценка:
Здравствуйте, Мишень-сан, Вы писали:

H>>Dictionary_[Type1, type2]


МС>Не выйдет, к сожалению

МС>_ вполне легальный символ в любом литерале, причём на любой позиции. ИМХО, такой вариант создаст ещё больше неоднозначностей, чем <> или [].

Честно говоря, я не вижу принципиальных ограничений. Wildcard _ по прямому назначению используется в несколько ином контексте: сопоставление с образцом, частичное применение, по непрямому — префикс игнорируемого значения; а вот случай конкретизации генерика вполне обособлен (слева всегда идет имя типа) и однозначен. Мне просто кажется, что такой вариант читать проще — нету крякозябров всяких: @, #, !. Ближайшей альтернативой можно считать пару ^[ ]
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Предлагаю подобрать скобки для типов...
От: hardcase Пират http://nemerle.org
Дата: 30.12.09 19:33
Оценка:
А да. Забыл сказать. Я предлагаю использовать эту конструкцию "Имя_[" неразрывно, не допуская пробелы:
Dictionary_[ string, List_[object] ]

Т.е. фактически получим новое вхождение в варианту PExpr — GenericName — со списком аргументов.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Предлагаю подобрать скобки для типов...
От: seregaa Ниоткуда http://blogtani.ru
Дата: 31.12.09 11:48
Оценка:
Здравствуйте, VladD2, Вы писали:

S>>Я не за идентичности синтаксиса любой ценой, но за максимально возможное соответствие. Мой пост можно расценивать как вклад в копилку аргументов за сохранение угловых скобок, пусть и с двоеточием в виде префикса. А окончательное решение конечно нужно принимать по совокупности всех аргуменов.


VD>И получается, что интересы новичков начинают конфликтовать с интересами тех, кто использует язык по полной.


Конкретно здесь конфликта не вижу — синтаксис определения типов все равно будет меняться, и тем кто уже юзает язык все равно придется привыкать по новой и переписывать свой код. Кстати, ты похоже уже принял решение по скобочкам? — вон и голосование прикрыл. Странно только, что в гугловой группе этот вопрос не обсуждался.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re: !<>
От: _nn_ www.nemerleweb.com
Дата: 07.09.11 16:02
Оценка: 6 (1) +1
Чем не устраивает !<> ?

1. Проще в наборе чем двойные скобки.
2. Нет неоднозначности.
3. Почти как C#, но зато без проблем: http://en.csharp-online.net/ECMA-334%3A_9.2.3_Grammar_ambiguities

[MyAttribute(typeof(IList!<string>))]
public class A!<T> where T : IMyInterface!<string>
{
   public B : IEnumerable!<T>{ get; set; }
}

def x = List!<int, List!<int, List!<int>>>([1, 2])[0];


http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Предлагаю подобрать скобки для типов...
От: catbert  
Дата: 07.09.11 22:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Приветствуются любые мысли!


http://bikeshed.org/
Re: Предлагаю подобрать скобки для типов...
От: Аноним  
Дата: 08.09.11 10:17
Оценка:
А почему вообще не писать так

func a(a,b,c):d
....



вызов ф(int,1,4):double

???

какой смысл вообще выделять генерики то?
Почему их не сделать обычным типом?
Re[2]: Предлагаю подобрать скобки для типов...
От: _nn_ www.nemerleweb.com
Дата: 08.09.11 11:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А почему вообще не писать так


А>func a(a,b,c):d

А>....



А>вызов ф(int,1,4):double


А>???


А>какой смысл вообще выделять генерики то?

А>Почему их не сделать обычным типом?

Это что означает ? Давайте подробнее.

скобки () создадут другой конфлик
class A {}
class B {}

module P
{
  F[T](t : T) : int -> void { }
  F(t : int) : void { }

  Main() : void
  {
    def A = 1;
    def B = 2;
    F(A)(B);
  }
}


Это вызов генерик метода F с типом A или вызов метода F с аргументом A ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Предлагаю подобрать скобки для типов...
От: Аноним  
Дата: 08.09.11 11:18
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Аноним, Вы писали:


А>>А почему вообще не писать так


А>>func a(a,b,c):d

А>>....



А>>вызов ф(int,1,4):double


А>>???


А>>какой смысл вообще выделять генерики то?

А>>Почему их не сделать обычным типом?

__>Это что означает ? Давайте подробнее.


__>скобки () создадут другой конфлик

__>
__>class A {}
__>class B {}

__>module P
__>{
__>  F[T](t : T) : int -> void { }
__>  F(t : int) : void { }

__>  Main() : void
__>  {
__>    def A = 1;
__>    def B = 2;
__>    F(A)(B);
__>  }
__>}
__>


class A {}
class B {}

module P
{
  F(T ,t : T) : int -> void { }
  F(t : int) : void { }
  Main() : void
  {
    def A = 1;
    def B = 2;
    F(A, B); // это вызов генерика
    F(A); // это вызов функции

  }
}
Re[4]: Предлагаю подобрать скобки для типов...
От: _nn_ www.nemerleweb.com
Дата: 08.09.11 12:02
Оценка:
Здравствуйте, Аноним, Вы писали:

Т.е. типы и аргументы в перемешку ?

class A {}
class B {}

module P
{
  F(X, Y ,x : Y, y : Y) : void { }
  F(x : int, y : int, z : int, w : int) : void { }
  Main() : void
  {
    def A = 1;
    def B = 2;
    F(A, B, A, B); // вызовет генерика или нет ?
  }
}
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: Предлагаю подобрать скобки для типов...
От: Аноним  
Дата: 08.09.11 12:10
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Аноним, Вы писали:


__>Т.е. типы и аргументы в перемешку ?


class A {}
class B {}

module P
{
  F(X, Y ,x : Y, y : Y) : void { }
  F(x : int, y : int, z : int, w : int) : void { }
  Main() : void
  {
    def A = 1;
    def B = 2;
    F(A, B, A, B); // вызовет генерика или нет ? - функции
так как передаются значения
F(type(A), type(B), A, B) // для генерика 
  }
}


А вообще в таких неоднозначностяъ надо просто ругаться
Re[5]: Предлагаю подобрать скобки для типов...
От: Аноним  
Дата: 08.09.11 12:54
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Аноним, Вы писали:


__>Т.е. типы и аргументы в перемешку ?


class A {}
class B {}

module P
{
  F(X, Y ,x : Y, y : Y) : void { }
  F(x : int, y : int, z : int, w : int) : void { }
  Main() : void
  {
    def A = 1;
    def B = 2;
    F(:A, :B, A, B); //  генерика 
    F(A, B, A, B); // Функция
 }
}
Re[2]: Предлагаю подобрать скобки для типов...
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.09.11 13:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Почему их не сделать обычным типом?


Очевидно, потому что они являются обобщенным типом.

ЗЫ

Сори, какой вопрос, таков ответ.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Предлагаю подобрать скобки для типов...
От: Аноним  
Дата: 08.09.11 14:20
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Аноним, Вы писали:


А>>Почему их не сделать обычным типом?


VD>Очевидно, потому что они являются обобщенным типом.


VD>ЗЫ


VD>Сори, какой вопрос, таков ответ.


Зачем делать искусственное разделение?
Re[6]: Предлагаю подобрать скобки для типов...
От: _nn_ www.nemerleweb.com
Дата: 08.09.11 14:32
Оценка:
Здравствуйте, Аноним, Вы писали:

Дело в том, что, как раз, в большинстве случаев тип в генерик методе явно указывать не нужно.
А когда нужно, хотелось бы легко различать где типы и где аргументы, ну и, кроме того, не будет неоднозначностей.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: Предлагаю подобрать скобки для типов...
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.09.11 14:33
Оценка:
Здравствуйте, Аноним, Вы писали:

>>Сори, какой вопрос, таков ответ.


А>Зачем делать искусственное разделение?


Не вижу никакой искусственности. Нмерл не выводит обобщенных типов и требует их явного задания.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Предлагаю подобрать скобки для типов...
От: Аноним  
Дата: 08.09.11 15:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Аноним, Вы писали:


>>>Сори, какой вопрос, таков ответ.


А>>Зачем делать искусственное разделение?


VD>Не вижу никакой искусственности. Нмерл не выводит обобщенных типов и требует их явного задания.


Есть принципиальная причина "Немерл не выводит обобщенных типов и требует их явного задания"?
Зачем усложнять когда можно обобщить?

например что такое статистический объект? это тип или это значение?
Re[6]: Предлагаю подобрать скобки для типов...
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.09.11 17:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть принципиальная причина "Немерл не выводит обобщенных типов и требует их явного задания"?

А>Зачем усложнять когда можно обобщить?

Вот обобщение в данном случае и есть усложнение. В этом мире ничего даром не дается. Вывод обобщенного типа дает больше поводов для ошибок, замедлит алгоритм и потребует много работы на его реализацию. Меж тем, практика показывает, что обобщенные локальные функции в Nemerle используются очень редко, и всегда могут быть заменены методами.

При использовании же вывод типов работает совершенно одинаково как для обобщенных функций функций, так и для обычных.

А>например что такое статистический объект?


Не знаю. Это у тебя надо спросить.

А>это тип или это значение?


О чем речь то?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Предлагаю подобрать скобки для типов...
От: Аноним  
Дата: 08.09.11 20:21
Оценка: +1
Здравствуйте, VladD2, Вы писали:

Давайте рассуждать логицски и систематицски.

Какие в семибитном ASCII существуют скобки?

[] <> {} ()

Усё.

Любая пара этих скобок для аргументов типов вносит в синтаксис неоднозначность.

Имеем варианты:

1) допустить неоднозначности и бороться с ними по возможности цивилизованными способами;

2) вводить другие символы, которые у кого-нибудь да вызовут аллергию.

На первый взгляд, в текущей постановке задача не имеет хорошего решения.

Лично мне больше всего импонируют варианты Type<Arg> и Type`Arg`, потому что символ ` набирается нажатием одной кнопки без шифта и не выглядит слишком дико.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.