Точка с запятой может быть либо разделителем операторов, либо завершителем.
В Си она является завершителем - после каждого оператора должна стоять точка с запятой:
a = b+c ;
d = x-y;В Паскале, который изначальный Паскаль, она являлась разделителем операторов, поэтому последний оператор в блоке не имеет её:
begin
a = b+c;
d = x-y
endВ Хаскеле,
(
Read more... )
В Haskell синтаксисе мне не нравится
зависимость от индентации, это не очень хорошо,
а синтаксис без "индентозависимости" неудобен.
Coq'овый синтаксис несколько громоздкий (как OCaml),
но там хорошо сделано с точкой в конце определения.
По-моему, "самое оно" будет Haskell'ный синтаксис,
только с избавлением от "индентозависимости", как в Coq.
Единственный (по-моему, небольшой) недостаток
будет в неперестановочности точки.
Reply
Неперестановочность разделителя это мелкий, но досадный недостаток. ;)
Reply
значительно больше, чем индентозависимость,
которая, всего лишь, вызывает некоторые
неприятные впечатления от синтаксиса ;-)
На практике она мешает крайне редко.
И уж читать написанные программы
не мешает нисколько.
Мне нравится в Haskell'евом синтаксисе
всё, кроме зависимости от индентации.
И если что-то разрабатывать, я бы
взял за основу подобный подход.
Он хорошо подходит для всего,
отличающегося от императивного.
Если избавляться от "индентозависимости",
то надо делать это не скобочками, а точкой
в конце определения и разделение выражений
делать не определённым знаком, а несколькими,
подходящими под смысл конкретных выражений.
Пример, как это хорошо сделать -- Coq.
Правда, всё остальное мне в нём не очень нравится.
Reply
то надо делать это не скобочками, а точкой
в конце определения и разделение выражений
делать не определённым знаком, а несколькими,
подходящими под смысл конкретных выражений.
Открывающаяся скобочка - начало выражения. Точка с запятой - завершитель всех, за исключением последнего. Закрывающая скобочка - завершитель списка определений.
Получается то же, что и у тебя. Плюс-минус. ;)
Reply
Ну в общем, да.
Reply
Leave a comment