Точка с запятой может быть либо разделителем операторов, либо завершителем.
В Си она является завершителем - после каждого оператора должна стоять точка с запятой:
a = b+c ;
d = x-y;В Паскале, который изначальный Паскаль, она являлась разделителем операторов, поэтому последний оператор в блоке не имеет её:
begin
a = b+c;
d = x-y
endВ Хаскеле,
(
Read more... )
Comments 16
Reply
Reply
Reply
Reply
(The comment has been removed)
Я вел речь и об операторах, и о выражениях. В обоих случаях, по-моему, завершитель лучше разделителя.
Reply
#define ENTRY(x) { #x, &foobar::x },
typedef struct entry_t_
{
const char *name;
void (*func_ptr)();
} entry_t_;
entry_t_ array[] =
{
ENTRY(foo)
ENTRY(bar)
ENTRY(qux)
ENTRY(nya)
};
Reply
А то я помню, как делал таблички с помощью
/* содержимое файла с табличкой о некоем перечислимом типе */
ENUM_ENTRY(a,"a",parameter) ... _ENUM_COMMA
ENUM_ENTRY(b,"b",param) ... _ENUM_COMMA
ENUM_ENTRY(l,"l",dummy) ... _ENUM_LASTи при включении определял и _ENUM_COMMA (, или ;) и _ENUM_LAST (пусто или ;).
Reply
В Haskell синтаксисе мне не нравится
зависимость от индентации, это не очень хорошо,
а синтаксис без "индентозависимости" неудобен.
Coq'овый синтаксис несколько громоздкий (как OCaml),
но там хорошо сделано с точкой в конце определения.
По-моему, "самое оно" будет Haskell'ный синтаксис,
только с избавлением от "индентозависимости", как в Coq.
Единственный (по-моему, небольшой) недостаток
будет в неперестановочности точки.
Reply
Неперестановочность разделителя это мелкий, но досадный недостаток. ;)
Reply
значительно больше, чем индентозависимость,
которая, всего лишь, вызывает некоторые
неприятные впечатления от синтаксиса ;-)
На практике она мешает крайне редко.
И уж читать написанные программы
не мешает нисколько.
Мне нравится в Haskell'евом синтаксисе
всё, кроме зависимости от индентации.
И если что-то разрабатывать, я бы
взял за основу подобный подход.
Он хорошо подходит для всего,
отличающегося от императивного.
Если избавляться от "индентозависимости",
то надо делать это не скобочками, а точкой
в конце определения и разделение выражений
делать не определённым знаком, а несколькими,
подходящими под смысл конкретных выражений.
Пример, как это хорошо сделать -- Coq.
Правда, всё остальное мне в нём не очень нравится.
Reply
то надо делать это не скобочками, а точкой
в конце определения и разделение выражений
делать не определённым знаком, а несколькими,
подходящими под смысл конкретных выражений.
Открывающаяся скобочка - начало выражения. Точка с запятой - завершитель всех, за исключением последнего. Закрывающая скобочка - завершитель списка определений.
Получается то же, что и у тебя. Плюс-минус. ;)
Reply
Leave a comment