Автор Тема: Модифицированный синтаксис Оберона  (Прочитано 180540 раз)

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #300 : Ноябрь 29, 2012, 03:35:51 pm »
Это обероновский стиль. От чудовищных конструкций типа ARRAY OF необходимо избавиться, как и от бегинов.
Стиль Обероновский- ничего не делать без необходимости... в противном случае давайте засерать СИ... (Питоны и С++ уже засраны)

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #301 : Ноябрь 29, 2012, 03:39:33 pm »
кстати .. введение кортежей привносит проблему глубокого копирования... а также  возможен гемор.. с записью - классом..

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #302 : Ноябрь 29, 2012, 03:42:46 pm »
как, например, инициализировать кортеж содержащий процедуру  - оператора взятия адреса нет.. вводить новый?

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #303 : Ноябрь 29, 2012, 03:54:39 pm »
M4:ARRAY [12] OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 );По моему, тут проблемы. Нужно следить чтобы число объявленных слева соответствовало тому, что справа. И это дико не удобно.

И, кстати, тут не соответствует.

1. нет .... это для статики... а это  -  M4:ARRAY OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 ); - для динамики
Я не вижу тут динамики, хоть убей. Это банальная статика - все же известно на этапе компиляции.
  здесь нет, но размер второго вариант мы можем изменять во время исполнения

..
setlength(M4, 20);
..
« Последнее редактирование: Ноябрь 29, 2012, 03:57:20 pm от DIzer »

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #304 : Ноябрь 29, 2012, 03:56:44 pm »
как, например, инициализировать кортеж содержащий процедуру  - оператора взятия адреса нет.. вводить новый?
Ничего не понял. Кортеж это ж просто не именованная структура (ака запись) с, вероятно, позиционными полями (но могут быть и именованные). При этом все остается на месте, в том числе и строгая статическая типизация.

Где тут проблемы? И где тут отличие, в плане глубокого копирования, от обычных именованных записей/структур?
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #305 : Ноябрь 29, 2012, 04:00:28 pm »
как, например, инициализировать кортеж содержащий процедуру  - оператора взятия адреса нет.. вводить новый?
Ничего не понял. Кортеж это ж просто не именованная структура (ака запись) с, вероятно, позиционными полями (но могут быть и именованные). При этом все остается на месте, в том числе и строгая статическая типизация.

Где тут проблемы? И где тут отличие, в плане глубокого копирования, от обычных именованных записей/структур?
а представьте себе.. что она содержит указатель ... который может быть как nil, так  и содержать адрес первого узла некоторого  графа...
 где нам остановиться при выполнении операции присваивания?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #306 : Ноябрь 29, 2012, 04:05:32 pm »
как, например, инициализировать кортеж содержащий процедуру  - оператора взятия адреса нет.. вводить новый?
Ничего не понял. Кортеж это ж просто не именованная структура (ака запись) с, вероятно, позиционными полями (но могут быть и именованные). При этом все остается на месте, в том числе и строгая статическая типизация.

Где тут проблемы? И где тут отличие, в плане глубокого копирования, от обычных именованных записей/структур?
а представьте себе.. что она содержит указатель ... который может быть как nil, так  и содержать адрес первого узла некоторого  графа...
 где нам остановиться при выполнении операции присваивания?
Ровно там же, где и при выполнении операции присваивания обычной записи в этой же ситуации.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #307 : Ноябрь 29, 2012, 04:07:50 pm »
далее , пусть мы совершаем глубокое копирование...
 но тогда .. рассмотрим процедуру возвращающую  такой кортеж.... получается, что она в принципе может при одном определении  возвращаемого типа возвращать объекты произвольной структуры...

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #308 : Ноябрь 29, 2012, 04:10:06 pm »
как, например, инициализировать кортеж содержащий процедуру  - оператора взятия адреса нет.. вводить новый?
Ничего не понял. Кортеж это ж просто не именованная структура (ака запись) с, вероятно, позиционными полями (но могут быть и именованные). При этом все остается на месте, в том числе и строгая статическая типизация.

Где тут проблемы? И где тут отличие, в плане глубокого копирования, от обычных именованных записей/структур?
а представьте себе.. что она содержит указатель ... который может быть как nil, так  и содержать адрес первого узла некоторого  графа...
 где нам остановиться при выполнении операции присваивания?
Ровно там же, где и при выполнении операции присваивания обычной записи в этой же ситуации.
тогда это не кортеж...- имеем неполную операцию присваивания...

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #309 : Ноябрь 29, 2012, 04:13:46 pm »
блин, тогда нужно вводить оператор глубокого копирования.. как в Эйфеле..вот так.. языки постепенно обрастают говнецом....
« Последнее редактирование: Ноябрь 29, 2012, 04:15:25 pm от DIzer »

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #310 : Ноябрь 29, 2012, 04:19:34 pm »
а  с другой стороны ..  нафига нам полноценный кортеж? = достаточно расширение (полезное) понятия инициализации  записи...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #311 : Ноябрь 29, 2012, 04:46:07 pm »
далее , пусть мы совершаем глубокое копирование...
 но тогда .. рассмотрим процедуру возвращающую  такой кортеж.... получается, что она в принципе может при одном определении  возвращаемого типа возвращать объекты произвольной структуры...
Опять ничего не понял (что-то я нонче тупой похоже). Каким образом? У кортежа - вполне конкретный тип, сигнатура. Всегда.

Соответственно будет нечто вроде
PROCEDIRE Foo() : (INTEGER, REAL)

И еще - пожалуйста определи что в твоем понимании "полноценный кортеж". Ибо я нигде не видел чтобы по умолчанию в кортеже было глубокое копирование.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #312 : Ноябрь 29, 2012, 04:54:00 pm »

И еще - пожалуйста определи что в твоем понимании "полноценный кортеж". Ибо я нигде не видел чтобы по умолчанию в кортеже было глубокое копирование.
  по умолчанию  его может и не быть , но для полноты концепции нужно вводить соответствующий оператор вообщем.. лучше не использовать слово КОРТЕЖ ( TUPLE) - использовать расширение понятие запись...  или его вводить как новый тип (наравне с записью)
« Последнее редактирование: Ноябрь 29, 2012, 04:58:36 pm от DIzer »

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #313 : Ноябрь 29, 2012, 05:01:17 pm »
Опять ничего не понял (что-то я нонче тупой похоже). Каким образом? У кортежа - вполне конкретный тип, сигнатура. Всегда.

Соответственно будет нечто вроде
PROCEDIRE Foo() : (INTEGER, REAL)

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

Какая разница?
PROCEDIRE Foo() : (INTEGER, POINTER TO MyRecord)
VAR p : POINTER TO MyRecord;
BEGIN
    NEW(p);
    RETURN (42, p);
END
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #314 : Ноябрь 29, 2012, 05:05:27 pm »
PROCEDIRE Foo() : (INTEGER, REAL)


с этой фигней нормально.. а если параметром кортежа будет значение  переменной процедурного типа?