[nem-pl] Widze jak ty to widzisz

Lukasz Kaiser kaiser at tenet.pl
Mon Nov 3 19:49:58 CET 2003


Hej.
 
> Po prostu u mnie zwykłe zmienne miały mniej więcej tą semantykę, ktora u 
> ciebie maja $(zmienne)
> Na "Twoje" mozna ten przyklad przetlumaczyc
> | <[ $x <- $y + $z ]> -> def (ny, nz) = (f y, f z);
>                                    <[ $x <- $ny - $nz ]>
> 
> No ale skoro juz rozumiem, o co ci chodzilo z tym $, to mnie objawilo, ze to 
> lepszy sposob.

Nie wiem czy koniecznie lepszy, ale jesli u ciebie wszystkie zmienne to
zwykle zmienne to jak zmatchowac takie cos: <[ x <- $(x) ]> ;).
Pewnie tez da sie jakos obejsc, mozna zrobic cos dodatkowo itd., ale mysle
ze warto zaczac od $() a potem myslec o zmniejszeniu ilosci kodowania
(cytat z Michala (mniej wiecej) - premature optimizations are root of all
evil ;)).

> Tak, zeby otrzymac na koncu (po wykonaniu sie rozszerzenia) typedtree, to 
> trzeba typowac "w locie", czyli np. przerobic typowanie calego jezyka... Ale 
> czy na pewno chcemy mieszac nasze rozszerzenia z typami? Kusi mnie pomysl, 
> zeby rozszerzenia traktowaly typy czysto syntaktycznie. Pewnie utnie to 
> jakies mozliwosci, ale przynajmniej bedzie proste do zrobienia. Niech otypuje 
> sie dopiero po wszystkim - to wymusza brak mozliwosci dobrania sie do typow
> w matchowaniu wyrazen, ale nie uniemozliwia zabawy z typami, funkcjami, 
> klasami (tyle ze bedzie ona na poziomie stringow).

Nie wiem na ile to bedzie przeszkadzac. Mysle ze w tej chwili to nie
przeszkadza prawie w ogole bo wszedzie gdzie mozesz potrzebowac typ to
user i tak go musi w kodzie wpisac i masz przynajmniej ten string. Jak
powstanie jakas rekonstrukcja typow to bedzie gorszy problem, bo user
sobie wpisze albo nie ten typ a ty musisz oba przypadki uwzglednic w
rozszerzeniu, co efektywnie zatruje pisanie rozszerzen. Ale jesli
rozszerzenia zaczna dzialac zanim w ogole zacznie sie zabawa z
rekonstrukcja typow to przynajmniej bedzie wiadomo gdzie sie pojawiaja
problemy i bedzie mozna je wtedy usuwac. Moze jakas prosta rekonstrukcja
typow da sie zrobic na tyle "w locie" zeby to dzialalo, nie wiem. Ale
to chyba nie jest problem na teraz.
 
> > E_fun_parm ( s, t ) -> ...
> > E_fun_parm ( s, t ) :: xs -> ...
> 
> To bylby tak naprawde jedyny moment, w ktorym znamy typ parametrow... No ale 
> moze dobrym pomyslem jest napisanie takiego ubogiego systemu, a potem 
> zastanowienie sie jak inteligentniej typowac rozszerzenia.

Powoli, wszedzie tam gdzie user wpisal tym tam my go znamy. Czy sa juz w
tej chwili w Nemerle miejsca w ktorych mozna wpisac typ ale nie trzeba
? Jesli jeszcze nie ma to fajnie, rozszerzenia skladniowe moga na razie
zakladac ze typy sa wszedzie wpisane i nie ma problemu.

- lk




More information about the devel-pl mailing list