[nem-pl] Przyszłościowe pomysły
Kamil Skalski
nazgul at omega.pl
Thu Mar 11 13:14:23 CET 2004
Thursday 11 of March 2004 12:59, Paweł W. Olszta wrote:
> To jeszcze nie działa, prawda?
>
Nie działa, niestety czas Michała jest skończony, a to on musi doktnąć kodu tu
i tam, żeby zaczęło działać. A niestety na karku jeszcze praca o
metaprogramowaniu... Ale już niedługo.... wkroczymy w nową jakość makr.
> Trzeba się będzie bardzo mocno zastanowić, jak definiować syntax
> extensions (ja cały czas myślę, że ensure oraz require powinny być
> makrami na funkcjach, tak jak Hygienic w tym przykładzie).
>
> Co do syntax extensions, to proponowałbym umożliwienie czegoś takiego:
>
> public [Contracted] jakas_funkcja (x : int) : int
> {
> require { x >= 0 }
> method { x * 2 }
> ensure { value % 2 == 0 }
> }
No tak, to jest całkiem fajne, ale jak widzisz [Contracted] i require są
trochę w innych miejscach. Implementacje tych dwu rzeczy musiałyby ze sobą
jakoś współpracować... hmm, może to nie będzie takie ciężkie.
Niestety ja nadal nie znam semantyki 'require' i 'ensure', chyba jeszcze ona
nigdy nie została formalnie wypowiedziana. Bo 'assert' i 'guard' to wiem, ale
czym 'require' się różni od 'assert'?!?!?!
Co do syntax-extensions, to pewnie warto byłoby zrobić coś lepszego niż obecna
prosta reakcja na pierwszy keyword. Chociażby żeby było możliwe coś takiego:
macro f (..)
syntax ("for", "(", ... )
macro g ()
syntax ("for", "{", ... )
> Być może moglibyśmy też zdefiniować makro [Property]? :-) (ale chyba
> musi być jakieś minimalne wsparcie od strony generatora kodu i systemu
> typów).
Być może na najwyższym poziomie tak, ale chyba jednak properties nadają się na
bazową część jezyka. Zresztą nie lubię jak się jakichś mechanizmów nadużywa
tam, gdzie bardziej odpowiednie i prostolinijne rozwiązania pasują.
>
> Bosze, jak ja pragnę takich makr :-D Do takiego [Contracted] można by
> wbudować pobieżną analizę kontraktów, możliwość definiowania specjalnych
> założeń (np. oprócz require to jeszcze notnull z listą parametrów) i w
> ogóle :-)
Uhum, tu wreszcie znalazłoby zastosowanie matchowanie po kodzie :D
Cierpliwości, w końcu po to dostaliśmy grant, że ciągnąć wszystko ku nowym
niepoznanych polom marchewkowym... ooops, badawczym.
Kamil
More information about the devel-pl
mailing list