RE: [nem-pl] z cyklu oglądamy i krytykujemy

Grzegorz Stelmaszek greg at tenet.pl
Thu Nov 6 21:40:09 CET 2003



> -----Original Message-----
> From: devel-pl-bounces at nemerle.org 
> [mailto:devel-pl-bounces at nemerle.org] On Behalf Of Michal Moskal
> Sent: Thursday, November 06, 2003 9:31 PM
> To: devel-pl at nemerle.org
> Subject: Re: [nem-pl] z cyklu oglądamy i krytykujemy
> 
> 
> On Thu, Nov 06, 2003 at 09:26:14PM +0100, Michal Moskal wrote:
> > On Thu, Nov 06, 2003 at 05:25:44PM +0100, olszta at tey.pl wrote:
> > > 3) straznik dla bloku wykonywalnego:
> > > 
> > > guard { [warunek]; [warunek]; ... }
> > [...]
> > > 4) straznik dla zmiennej:
> > > 
> > > guarded [nazwa zmiennej] : [typ]
> > > {
> > >   [warunek]; [warunek]; ...
> > > }
> > [...]
> > 
> > Czym one się różnią? Zauważ, że guard {} ma tylko sens na 
> wartościach, 
> > które są mutable. Nawet jeśli mutable jest głębiej, to IMHO zysk z 
> > tego guarda będzie średni. guarded mają przynajmniej jasną 
> semantykę 
> > (kiedy się odpalają).
> 
> Blah... gorzej:
> 
> >> To sa niezmienniki na poziomie calego bloku, podobnie jak require, 
> >> ale sprawdzane po kazdej instrukcji w bloku,
> 
> Co to jest ,,instrukcja w bloku''? Po każdym średniku czy jak?

Przy kazdej potencjalnej zmianie mutable'a, czyli bezposrednio przy tych
zmianach oraz po powrocie z wywolania funkcji [przepraszam za
skrzywienie imperatywne, ale mamy tutaj imperatywne konstrukcje no nie
:) ].

Można ewnetualnie rozwazyc propagowanie guardow w glab, tzn. przy
wywolywaniu funkcji będzie się automatycznie przekazywala lista guardow
które należy sprawdzac caly czas (to może być przydatne do powiedzenia,
ze np.. "w calym programie jakas zmienna jest > 0 i < 5".

greg





More information about the devel-pl mailing list