[nem-pl] z cyklu oglądamy i krytykujemy
Michal Moskal
malekith at pld-linux.org
Thu Nov 6 20:10:30 CET 2003
On Thu, Nov 06, 2003 at 05:25:44PM +0100, olszta at tey.pl wrote:
> 3) straznik dla bloku wykonywalnego:
>
> guard { [warunek]; [warunek]; ... }
>
> To sa niezmienniki na poziomie calego bloku, podobnie jak require,
> ale sprawdzane po kazdej instrukcji w bloku, a nie tylko na jego
> koncu (tu oczywiscie mozliwe sa pewne optymalizacje, ale to nie
> jest istotne w tej chwili).
>
> Tutaj jest taki problem, ze to jest bardzo fajne, jesli mamy
> zdefiniowane petle w jezyku (np. while). Inaczej przydaje sie to
> tylko w bardzo prostych programach.
Ależ mylisz się Pawle:
{
guard { n > 0 }
def loop () : void {
if (n < 10)
{ n <- n + 1; loop () }
else
n
}
loop ()
}
Brak while w niczym nie przeszkadza.
> -- PRZYKLAD --------------------
On się chyba nie bardzo nadaje do prezentacji, w szczególności:
- nie robi nic sensownego, choć udaje :-)
- transaction nie ma w nim sensu
Nie jestem jeszcze pewny co do require i ensure. Może lepiej dla obu po
prostu assert i dodatkowo pozwolić w ostatnim assert w bloku na używanie
value?
--
: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: When in doubt, use brute force. -- Ken Thompson : {E-,w}-- {b++,e}>+++ h
More information about the devel-pl
mailing list