понравилось |
[Jun. 27th, 2011|05:40 pm] |
у Вирта в Oberon07 забавная конструкция:
WHILE cond0 DO body0
ELSIF cond1 DO body1
[ELSIF condX DO bodyX]*
END думаю, очевидно, как работает. по нраву. хочу такую же в другие императивные языки. |
|
|
Comments: |
типа
while (1){
if(cond0){
}
else if ( cond1){
}
else
break;
}
прямь вот как отдельную конструкцию - да надо ли?
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 27th, 2011 - 05:25 pm |
---|
| | | (Link) |
|
надо ли. во-первых, изящней. во-вторых, break выпилен нахуй на ненадобностью.
Мне не очевидно, по cond1, cond2 цикл продолжается или завершается? Если первое то нахуя? Если второе, то где-то было (перл?). И я как-то придумывал язык, там было while () {} else () {}, хорошо для обработки ошибок.
то есть else без условия, конечно
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 27th, 2011 - 06:01 pm |
---|
| | | (Link) |
|
да очевидно, в общем-то. щёлкает по условиям, пока не наступит на истинное. как наступило — выполняет его часть «DO» и начинает всё сначала. если ни одно не щёлкнуло — цикл закончился.
собственно, введено для того, чтобы выкинуть к ебеням break (что и было сделано). а else в данном плане лишнее, потому как ничего выкинуть не позволяет. единственно, чем хорошо — иногда позволяет избавиться от двойного вычисления условия (конечно, cond в else не нужен).
From: | qulinxao |
Date: | June 27th, 2011 - 07:01 pm |
---|
| | Вирт - Ворт | (Link) |
|
сам сознавался что у неуважительного Дейкстры это обнаружил.
такой цикл в том числе для конечного автомата удобен.
ну у дейксты если все условия лажа то raise(АХТУНГ , полная лажа) и срыв коры.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 27th, 2011 - 11:40 pm |
---|
| | Re: Вирт - Ворт | (Link) |
|
не пользоваться хорошим — плохо. пользоваться слепо — тоже. ну и вообще — Вирт практик прежде всего, ему весь этот матан до пизды.
From: | alamar |
Date: | June 27th, 2011 - 10:00 pm |
---|
| | | (Link) |
|
Макрос можно написать.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 27th, 2011 - 11:41 pm |
---|
| | | (Link) |
|
для языков, где есть макросы, это не надо — там проще EDSL сделать. а остальные — увы. | |