Лэнгвиж дизайн.

Nov 12, 2008 14:49

Точка с запятой может быть либо разделителем операторов, либо завершителем.

В Си она является завершителем - после каждого оператора должна стоять точка с запятой:
a = b+c ;
d = x-y;В Паскале, который изначальный Паскаль, она являлась разделителем операторов, поэтому последний оператор в блоке не имеет её:
begin
a = b+c;
d = x-y
endВ Хаскеле, ( Read more... )

vhdl, Си, Паскаль, языки программирования, Хаскель

Leave a comment

nivanych November 13 2008, 12:42:47 UTC
Надо бы ещё вспомнить Haskell и Coq.
В Haskell синтаксисе мне не нравится
зависимость от индентации, это не очень хорошо,
а синтаксис без "индентозависимости" неудобен.
Coq'овый синтаксис несколько громоздкий (как OCaml),
но там хорошо сделано с точкой в конце определения.

По-моему, "самое оно" будет Haskell'ный синтаксис,
только с избавлением от "индентозависимости", как в Coq.
Единственный (по-моему, небольшой) недостаток
будет в неперестановочности точки.

Reply

thesz November 13 2008, 12:49:15 UTC
Не нравится - не пользуйся. Ставь везде скобочки. ;)

Неперестановочность разделителя это мелкий, но досадный недостаток. ;)

Reply

nivanych November 13 2008, 16:13:39 UTC
Ну уж нет, везде скобочки мне не нравятся
значительно больше, чем индентозависимость,
которая, всего лишь, вызывает некоторые
неприятные впечатления от синтаксиса ;-)
На практике она мешает крайне редко.
И уж читать написанные программы
не мешает нисколько.

Мне нравится в Haskell'евом синтаксисе
всё, кроме зависимости от индентации.
И если что-то разрабатывать, я бы
взял за основу подобный подход.
Он хорошо подходит для всего,
отличающегося от императивного.

Если избавляться от "индентозависимости",
то надо делать это не скобочками, а точкой
в конце определения и разделение выражений
делать не определённым знаком, а несколькими,
подходящими под смысл конкретных выражений.
Пример, как это хорошо сделать -- Coq.
Правда, всё остальное мне в нём не очень нравится.

Reply

thesz November 13 2008, 16:16:48 UTC
Если избавляться от "индентозависимости",
то надо делать это не скобочками, а точкой
в конце определения и разделение выражений
делать не определённым знаком, а несколькими,
подходящими под смысл конкретных выражений.

Открывающаяся скобочка - начало выражения. Точка с запятой - завершитель всех, за исключением последнего. Закрывающая скобочка - завершитель списка определений.

Получается то же, что и у тебя. Плюс-минус. ;)

Reply

nivanych November 13 2008, 17:20:28 UTC
Не, никаких плюсов и минусов! ;-)
Ну в общем, да.

Reply


Leave a comment

Up