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