=?us-ascii:iso-8859-2:utf-8?Q?=5Bnem-p?=
=?us-ascii:iso-8859-2:utf-8?Q?l=5D_Rozszerzenia_-_ich_sk=C2=B3adni?=
=?us-ascii:iso-8859-2:utf-8?Q?a?= , semantyka
Lukasz Kaiser
kaiser at tenet.pl
Tue Oct 28 23:49:58 CET 2003
> Już byÅ pomysÅ cokolwiek -> kod, ale MichaÅ stwierdziÅ, że to równoważne z kod
> -> kod, choÄ bÄdzie pewnie wiÄcej pisania z wyÅuskaniem wartoÅci
Hmm, ja nie rozumiem jaki jest problem ze zrobieniem w
kompilatorze funkcji
cokolwiek + kod -> cokolwiek + kod
jesli sie ma juz mozliwosc kod -> kod. Natomiast zakodowac pewnie sie
jakos da, ale zawsze trzeba wtedy kodowac. Ale to by bylo uzyteczne
let debug = true ;;
debugable ( debug, ( foo.runtests () ;; ) ) ;;
Jak parser ma to polknac z tymi podwojnymi ;; to ja nadal nie wiem.
> PomyÅl jednak o tym, jak by to miaÅo wyglÄ
daÄ w praktyce:
> masz sobie klasÄ
> class A { blabla };
> i chcesz otrzymaÄ string z informacjami o niej, wiÄc wg twojej wersji robisz
> def desription = describeYourself ( class A { blabla }; );
> storeToFile description "descr.xml"
> trochÄ chore, żeby definicje klasy wklejaÄ gdzieÅ w Årodek kodu, no nie?
>
> lepiej to zrobiÄ
> desciptionable (
> class A {bblabla };
> )
> i potem
> A.describeMyselfToFile("descr.xml");
>
> Chodzi o to, że rozszerzenie doda do klasy metodÄ, która bÄdzie miaÅa wpisane
> informacje o klasie.
Rozumiem, ze tak mozesz. Ale napisanie tego rozszerzenia bedzie takie
sobie i musisz dodac metode do klasy. Ja nie mowilem,
ze masz generowac tylko stringa (tak mi wyszlo w przykladzie), tylko ze
by milo bylo moc zrobic
let ( desc, code ) = descriptionabe ( ... ) in
if printOnly then print_string desc else code ;;
Ale w kazdym razie z tym czy bez tego ja i tak w ogole nie wiem jak to ma
sie sparsowac, otypowac i cokolwiek, wiec takie rozwazania mozna zostawic
do momentu w ktorym bedzie wiadomo ile wysilku trzeba wlozyc dodatkowo
zeby moc to zrobic w stosunku do zwyklego kod -> kod.
> Może [< x : int >], tylko że to by wg poprzedniej definicji znaczyÅoby
> wyrażenie E_TypeVar( E_Var(x), E_Type(int) ), a nie otypowanie x'a
Nie, to nie jest takie proste chyba, ale ja nie wiem. W kazdym razie
chodzi o dodanie do klasy class foo { bar x ; ... } metody getTypeOfX
wypisujacej typ x (czyli "bar", ale dla innej klasy niekoniecznie bar).
- lk
More information about the devel-pl
mailing list