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/