OberonCore https://forum.oberoncore.ru/ |
|
Oberon-07 базовые типы. https://forum.oberoncore.ru/viewtopic.php?f=115&t=3045 |
Страница 1 из 1 |
Автор: | Alexey Veselovsky [ Воскресенье, 05 Декабрь, 2010 05:30 ] |
Заголовок сообщения: | Oberon-07 базовые типы. |
Цитата: Definition: A type T extends a type T0, if it equals T0, or if it directly extends an extension of T0. Conversely, a type T0 is a base type of T, if it equals T, or if it is the direct base type of a base type of T. Как это собственно понимать? Код: T1 = RECORD i : INTEGER END T2 = RECORD i : INTEGER END T1 equals to T2? В ответе желательна ссылка на Оберон-07 репорт, где это уточняется. Т.е. где вводится опирация сравнения для типов (записей)? |
Автор: | Geniepro [ Воскресенье, 05 Декабрь, 2010 09:55 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
Alexey Veselovsky писал(а): T1 equals to T2? Разве в оберонах структурная типизация? У типов T1 и T2 нет (общего) базового типа, поэтому они разные. |
Автор: | Alexey Veselovsky [ Воскресенье, 05 Декабрь, 2010 10:03 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
Geniepro писал(а): Alexey Veselovsky писал(а): T1 equals to T2? Разве в оберонах структурная типизация? У типов T1 и T2 нет (общего) базового типа, поэтому они разные. Ээ.. А где про это сказано? Нет, ну я конечно понимаю что все привыкли что оно так. Но если отбросить привычку и интуицию и четко следовать тому, что написано в папире, то откуда это следует? |
Автор: | Роман М. [ Воскресенье, 05 Декабрь, 2010 11:13 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
Этот недочёт относится также и к начальному Оберону, и к КП. Нигде явно не указано про сравнение записей. Подразумевается, что каждое определение нового типа задаёт его уникальность. Соответсвенно, сравнение типов также основывается на этом. (модератор) Дальнейшее обсуждение, касающееся сравнения записевых типов в КП, выделено: viewtopic.php?p=55187#p55187 |
Автор: | Alexey Veselovsky [ Воскресенье, 05 Декабрь, 2010 11:23 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
Роман М. писал(а): Этот недочёт относится также и к начальному Оберону, и к КП. Нигде явно не указано про сравнение записей. Подразумевается, что каждое определение нового типа задаёт его уникальность. Соответсвенно, сравнение типов также основывается на этом. Тогда имеем противоречие. Код: TYPE A = INTEGER B = INTEGER Тогда тоже задает уникальность, но по традиции это не так. Тут новые типы не вводятся. A и B это один и тот же тип, просто это псевдонимы для INTEGER. Т.е. это не отличимо от typedef в Си. |
Автор: | Alexey Veselovsky [ Воскресенье, 05 Декабрь, 2010 11:29 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
А кстати, в Oberon-07 вот такое форма: Код: TYPE A = INTEGER запрещена. Ибо Код: TypeDeclaration = identdef "=" StrucType. StrucType = ArrayType | RecordType | PointerType | ProcedureType. В отличае от Oberon-02 (в Обероне то же самое): Код: TypeDecl = IdentDef "=" Type.
Type = Qualident | ARRAY [ConstExpr {"," ConstExpr}] OF Type | RECORD ["("Qualident")"] FieldList {";" FieldList} END | POINTER TO Type | PROCEDURE [FormalPars]. Qualident = [ident "."] ident. |
Автор: | Евгений Темиргалеев [ Воскресенье, 05 Декабрь, 2010 11:42 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
Alexey Veselovsky писал(а): А кстати, в Oberon-07 вот такое форма: И в этом есть свой положительный момент.Код: TYPE A = INTEGER запрещена. Ибо... Кстати, Алексей, а в чём реальная проблема-то? Или исключительно вопрос буквоедства? |
Автор: | Alexey Veselovsky [ Воскресенье, 05 Декабрь, 2010 11:43 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
Роман М. писал(а): Этот недочёт относится также и к начальному Оберону, и к КП. Нигде явно не указано про сравнение записей. Подразумевается, что каждое определение нового типа задаёт его уникальность. Соответсвенно, сравнение типов также основывается на этом. Собственно интересует сравнение ТИПОВ а не записей. |
Автор: | Alexey Veselovsky [ Воскресенье, 05 Декабрь, 2010 11:47 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
Евгений Темиргалеев писал(а): Alexey Veselovsky писал(а): А кстати, в Oberon-07 вот такое форма: И в этом есть свой положительный момент.Код: TYPE A = INTEGER запрещена. Ибо... Это безусловно положительный момент. Наконец убрали недофичу. Евгений Темиргалеев писал(а): Кстати, Алексей, а в чём реальная проблема-то? Или исключительно вопрос буквоедства? Я просто пытаюсь понять что такое Oberon-07 без оглядок на привычки и интуицию. Т.е. посмотреть на язык не зашоренным взглядом. Возможно это выльется в предложение по уточнению language report'a. В частности если утверждение про equals работает для Код: T1 = RECORD i : INTEGER END T2 = RECORD i : INTEGER END То семантика WITH становится довольно интересной. |
Автор: | Alexey Veselovsky [ Среда, 08 Декабрь, 2010 09:51 ] |
Заголовок сообщения: | Re: Oberon-07 базовые типы. |
Посмотрел Oberon-2 report, там это уточнение (Appendix A) имеется также. Т.о. неоднозначность имеется только в Oberon и Oberon-07. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |