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

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #255 : Ноябрь 29, 2012, 10:29:29 am »
foo :: Integer Integer -> Integer
foo a b = a*a + b*b
Мод Оберон:
foo(a, b: int): int
    return a*a + b*b
end foo;

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Модифицированный синтаксис Оберона
« Ответ #256 : Ноябрь 29, 2012, 10:43:18 am »
foo(a, b: int): int
    return a*a + b*b
end foo;

А лямбды как записывать?  ;)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #257 : Ноябрь 29, 2012, 11:03:27 am »
foo(a, b: int): int
    return a*a + b*b
end foo;

А лямбды как записывать?  ;)
А в Обероне они внезапно появились? :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #258 : Ноябрь 29, 2012, 11:09:43 am »
Но вообще, мое мнение: питонообразный причесанный синтаксис без изменения грамматики Оберону пошел бы явно на пользу. То есть это многократно увеличило бы шансы на то, что широкие слои проггеронаселения его хотя бы попробуют (ибо у подавляющего большенства аномально-отрицательная реакция на слово begin и end среди ключевых слов).
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Модифицированный синтаксис Оберона
« Ответ #259 : Ноябрь 29, 2012, 11:18:50 am »
foo(a, b: int): int
    return a*a + b*b
end foo;

А лямбды как записывать?  ;)
А в Обероне они внезапно появились? :-)

Я к тому, что если уж модифицировать синтаксис,
то нужно предусмотреть возможность безболезненного введения всяких популярных свистоперделок типа лямбд.  ;)

В этом плане предложенный вариант не катит, т.к. он "деревянный"  :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Модифицированный синтаксис Оберона
« Ответ #260 : Ноябрь 29, 2012, 11:22:52 am »
Но вообще, мое мнение: питонообразный причесанный синтаксис без изменения грамматики Оберону пошел бы явно на пользу. То есть это многократно увеличило бы шансы на то, что широкие слои проггеронаселения его хотя бы попробуют (ибо у подавляющего большенства аномально-отрицательная реакция на слово begin и end среди ключевых слов).

А я одинаково ненавижу как begend'ы так и сишные {}. Но при этом питоновый синтаксис мне кажется перебором. Идеально было бы нечто среднее между Python и Lua. Отсутствие end'ов в питоне мозг отказывается воспринимать. Хрен знает мож это фобии мои...

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #261 : Ноябрь 29, 2012, 11:34:15 am »
Идеально было бы нечто среднее между Python и Lua.

Это как?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #262 : Ноябрь 29, 2012, 11:35:57 am »
Но вообще, мое мнение: питонообразный причесанный синтаксис без изменения грамматики Оберону пошел бы явно на пользу. То есть это многократно увеличило бы шансы на то, что широкие слои проггеронаселения его хотя бы попробуют (ибо у подавляющего большенства аномально-отрицательная реакция на слово begin и end среди ключевых слов).

А я одинаково ненавижу как begend'ы так и сишные {}. Но при этом питоновый синтаксис мне кажется перебором. Идеально было бы нечто среднее между Python и Lua. Отсутствие end'ов в питоне мозг отказывается воспринимать. Хрен знает мож это фобии мои...
А я нормально воспринимаю. Но в принципе, да. В синтаксисе должна быть возможность оформлят не отступами а "скобочками". Иногда это полезно.

В общем, тут хаскелл рулит :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Модифицированный синтаксис Оберона
« Ответ #263 : Ноябрь 29, 2012, 11:48:40 am »
Идеально было бы нечто среднее между Python и Lua.
Это как?

Функции примерно так наверно:
foo = def(a, b: int): int
    return a*a + b*b
end
Т.е. нету луашного длинного function (вместо def можно func)
Но при этом есть end и форма записи лямбдовая...
А такая форма:
def foo(a, b: int): int
    return a*a + b*b
end
нинужна вообще  :P

Плюс к этому автовывод типов, т.е. тип функции не указывать:
foo = def(a, b: int)
    return a*a + b*b
end
и стало совсем ня  :D

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #264 : Ноябрь 29, 2012, 11:52:13 am »
Идеально было бы нечто среднее между Python и Lua.
Это как?

Функции примерно так наверно:
foo = def(a, b: int): int
    return a*a + b*b
end
Т.е. нету луашного длинного function (вместо def можно func)
Но при этом есть end и форма записи лямбдовая...
А такая форма:
def foo(a, b: int): int
    return a*a + b*b
end
нинужна вообще  :P

Плюс к этому автовывод типов, т.е. тип функции не указывать:
foo = def(a, b: int)
    return a*a + b*b
end
и стало совсем ня  :D

Это меняет не только синтаксис, но и грамматику с семантикой языка.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Модифицированный синтаксис Оберона
« Ответ #265 : Ноябрь 29, 2012, 11:56:05 am »
Я б сказал вообще язык меняет  ;D

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #266 : Ноябрь 29, 2012, 11:58:18 am »
Я б сказал вообще язык меняет  ;D
Следовательно не подходит. (я не буду говорить хороши эти изменения или плохи, они просто не подходят для рассматриваемой задачи)
Y = λf.(λx.f (x x)) (λx.f (x x))

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #267 : Ноябрь 29, 2012, 12:48:57 pm »
foo(a, b: int)
    return a*a + b*b
end
Чем плоха такая форма?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #268 : Ноябрь 29, 2012, 12:52:28 pm »
foo(a, b: int)
    return a*a + b*b
end
Чем плоха такая форма?
Тем, что без вывода типа это работать не будет. Где указан тип возвращаемого значения?
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #269 : Ноябрь 29, 2012, 01:01:30 pm »
foo(a, b: int)
    return a*a + b*b
end
Чем плоха такая форма?
Тем, что без вывода типа это работать не будет. Где указан тип возвращаемого значения?
;D  так надо его ввести... а заодно и  инициализацию 0 по умолчанию,  инициализацию переменных в секции var, для хардкорщиков модификатор undef (показатель что переменная не инициализируется), перегрузку процедур, и вместо безликих end ов -  e_rec, e_if,e_for, e_while... и массивы  индексируемые с единицы
« Последнее редактирование: Ноябрь 29, 2012, 01:03:10 pm от DIzer »