может ли тип быть первоклассным элементом
От: Аноним  
Дата: 15.05.11 18:58
Оценка:
интересно
Re: может ли тип быть первоклассным элементом
От: hardcase Пират http://nemerle.org
Дата: 15.05.11 19:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>интересно


System.Type?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: может ли тип быть первоклассным элементом
От: Аноним  
Дата: 15.05.11 19:11
Оценка:
Здравствуйте, hardcase, Вы писали:

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


А>>интересно


def a=int;
func c(a,b){a:b}
c(5,a)
Re: может ли тип быть первоклассным элементом
От: 0x7be СССР  
Дата: 15.05.11 20:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>интересно

Вполне.
Есть более интересный вопрос — как это может уживаться со статической типизацией...
Re[2]: может ли тип быть первоклассным элементом
От: WolfHound  
Дата: 15.05.11 20:38
Оценка: +1
Здравствуйте, 0x7be, Вы писали:

0>Вполне.

0>Есть более интересный вопрос — как это может уживаться со статической типизацией...
Это совершенно не интересный вопрос.
Вот так:
foo[T](a : T) : T
{
    ...
}

T можно рассматривать как аргумент функции.

Про то что творится в языках с зависимыми типами я лучше помолчу...
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: может ли тип быть первоклассным элементом
От: nikov США http://www.linkedin.com/in/nikov
Дата: 16.05.11 03:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>иможет ли тип быть первоклассным элементом


В Nemerle или вообще? Вообще — может. В Nemerle, насколько я знаю, пока нет.
Re[3]: может ли тип быть первоклассным элементом
От: 0x7be СССР  
Дата: 16.05.11 08:03
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Это совершенно не интересный вопрос.

WH>Вот так:
WH>
WH>foo[T](a : T) : T
WH>{
WH>    ...
WH>}
WH>

WH>T можно рассматривать как аргумент функции.
Да, в принципе так, если при вызове можно написать что-то типа:
var myType = ConstructMyType();
foo<myType>(...);

Вопрос в другом, что делать внутри функции с этим типом?
Надо вводить метатипы, которые тоже, по идее, должны быть первоклассными и так далее
Не получится ли что-то типа:
foo<[MyMetaMetaMetaType]>{MyMetaMetaType}[MyMetaType]<myType>(...);

Re[4]: может ли тип быть первоклассным элементом
От: hardcase Пират http://nemerle.org
Дата: 16.05.11 11:51
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Надо вводить метатипы, которые тоже, по идее, должны быть первоклассными и так далее


Полиморфизм высших порядков
/* иЗвиНите зА неРовнЫй поЧерК */
Re: может ли тип быть первоклассным элементом
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.05.11 14:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>интересно


В Nemerle есть макросы. Внутри них типы являются первокласными сущностями. Они представляются типом TypeBuilder. Макросы могут создавать новые типы и расширять старые (даже частично изменять).

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

В полном смысле этого слова типы являются первоклассной сущностью только в динамически типизированных языка с прототипным ООП. Но это скрипты со всеми вытекающими. Классы в них ни что иное как сахар для хэш-таблиц.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: может ли тип быть первоклассным элементом
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.05.11 14:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>def a=int;

А>func c(a,b){a:b}
А>c(5,a)

Какая тут должна быть семантика?
И что этим достигается?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: может ли тип быть первоклассным элементом
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.05.11 14:31
Оценка:
Здравствуйте, nikov, Вы писали:

N>В Nemerle или вообще? Вообще — может. В Nemerle, насколько я знаю, пока нет.


По ссылке речь идет о функциях. Новые типы функций, в некотором роде, могут порождать любые ФЯ. Но вот так чтобы типы были полностью превокласными занчениями (могли бы изменяться в рантайме, помещаться в переменные и т.п.) — это, на мой взгляд противоречит приципам статической типизации. Все статически типизированные языки производят операции с типами во время компиляции. А это уже не совсем первоклассные сущности получаются.

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