Автор Тема: Пробуем писать на O7  (Прочитано 26172 раз)

DddIzer

  • Гость
Re: Пробуем писать на O7
« Ответ #60 : Сентябрь 08, 2013, 07:21:25 am »
Как уже предлагал в конференции, сделать по типу Модулы-3:
FROM ModuleName IMPORT X, Y, Z, P := Proc, P1 := Proc1;
неплохо , но требует расширения синтаксиса, как и в случае с алиасом.

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Пробуем писать на O7
« Ответ #61 : Сентябрь 08, 2013, 09:38:05 am »
    res := VectorInt.Create;

Так, а разве в Обероне при вызове функции скобки не являются обязательными? В КП без скобок можно вызывать только процедуры.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Пробуем писать на O7
« Ответ #62 : Сентябрь 08, 2013, 11:15:22 am »
Как уже предлагал в конференции, сделать по типу Модулы-3:
FROM ModuleName IMPORT X, Y, Z, P := Proc, P1 := Proc1;
неплохо , но требует расширения синтаксиса, как и в случае с алиасом.

Так это ещё в Модуле-2 было, Вирт от этого отказался в обероне в пользу явной квалификации без исключений...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Пробуем писать на O7
« Ответ #63 : Сентябрь 08, 2013, 11:16:30 am »
    res := VectorInt.Create;

Так, а разве в Обероне при вызове функции скобки не являются обязательными? В КП без скобок можно вызывать только процедуры.

Это называется непротестированный код )))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Пробуем писать на O7
« Ответ #64 : Сентябрь 08, 2013, 11:32:15 am »
Как уже предлагал в конференции, сделать по типу Модулы-3:
FROM ModuleName IMPORT X, Y, Z, P := Proc, P1 := Proc1;
неплохо , но требует расширения синтаксиса, как и в случае с алиасом.
Это не важно, главное, что ни один из предложенных вариантов не будет компилироваться ни одним компилятором любого из Оберонов.
И если уж мы решили расширить язык, то в данном случае лучше расширить синтаксически, чем семантически. Потому что перегруженная семантика совершенно не очевидна.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Пробуем писать на O7
« Ответ #65 : Сентябрь 08, 2013, 11:57:02 am »
    res := VectorInt.Create;

Так, а разве в Обероне при вызове функции скобки не являются обязательными? В КП без скобок можно вызывать только процедуры.

Являются. Иначе была бы при подобном вызове функции которая возвращает процедурный тип. Так что это мой ляп.

Плюс у меня там еще один ляп:
Merge(input, 10);
Вызов функции без созранения возвращенного значения.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Пробуем писать на O7
« Ответ #66 : Сентябрь 08, 2013, 12:04:45 pm »
Как уже предлагал в конференции, сделать по типу Модулы-3:
FROM ModuleName IMPORT X, Y, Z, P := Proc, P1 := Proc1;
неплохо , но требует расширения синтаксиса, как и в случае с алиасом.
Это не важно, главное, что ни один из предложенных вариантов не будет компилироваться ни одним компилятором любого из Оберонов.
Возможно лишь потому, что они не до конца и не правильно интерпретируют Oberon-report? :-)

Вопрос не в добавлении расширизма на самом деле. Вопрос в уточнении репорта, ибо этот момент (могут ли быть константы процедурного типа). Но это конечно отдельная тема.

Цитировать
И если уж мы решили расширить язык, то в данном случае лучше расширить синтаксически, чем семантически. Потому что перегруженная семантика совершенно не очевидна.
Нет, не решили. Речь идет о уточнении семантики актуального оберон-репорта. Без оглядки на то, какие традиции сложились вокруг реализаций других оберонов.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Пробуем писать на O7
« Ответ #67 : Сентябрь 08, 2013, 12:07:27 pm »
Вообще, народ, я этот пример приводил не за ради этих несчастных CONST'ов (они второстепенны), а чтобы показать как примерно будет писаться код с использованием стандартной либы. То есть показать примерно как я себе вижу оную стандартную библиотеку в разрезе контейнеров.

Я правильно понимаю, что возражений, замечаний и вопросов нет?
Y = λf.(λx.f (x x)) (λx.f (x x))