[nem-pl] Zmiany składniowe
Michal Moskal
malekith at pld-linux.org
Wed Oct 15 17:18:13 CEST 2003
On Wed, Oct 15, 2003 at 04:55:24PM +0200, Kamil Skalski wrote:
> > Zamiast let może jakieś inne słowo, np. val. Na pewno coś krótkiego.
> >
>
> let mi sie podoba, na chama mogloby byc nawet
> let x be Nil in
> albo
> let x denote 7 in
Yuck!
> ale ostatecznie tak jak jest = wydaje sie w porzadku
>
> podsumowujac, podoba mi sie tak:
> let ref x <- 5 in
> let y = 0 in
> x <- y
Chodzi o to, że jeśli robisz coś w miedzyczasie imperatywnie, to Ci się
kod coraz bardziej wysuwa w prawo i np. zmieniasz kolejność letów żeby
tego uniknąć, albo jeszcze jakieś inne sztuczki robisz. Z drugiej strony
jeśli zamiast "in" byłby ";" to nie byłoby tego problemu, tylko jak dla
mnie ";" gryzie się z "let" (to tak jakby zakres "let" kończył się na ";",
a on idzie dalej). Z drugiej strony "val x = 3;" jest chyba jasne, że
definuje wartość, do użycia również dalej.
Może jakoś tak:
{
ref x <- 3;
val y = 0;
x <- y;
val quxx = x + y;
x <- quxx;
fun foo () : void { bar () }
and bar () : void { foo () };
foo ();
bar ();
}
Może też zamiast ref "val ref" a zamiast fun "val fun". Choć nie wydaje
mi się.
Chodzi mi o to, żeby nie utrudniać niepotrzebnie programowania
imperatywnego, jeśli nie ma po temu dobrych powodów. Jeśli ktoś pisze
funkcjonalnie to zamiast:
let x = foo (y) in
let z = bar (x, x) in
(z, x)
Bedzie miał:
{
val x = foo (y);
val z = bar (x, x);
(z, x)
}
Co jest IMHO podobnie czytelne. Można by się wręcz kłócić, że z val jest
lepiej :-)
--
: 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