[nem-pl] Kolorowanie zmiennych przez inne funkcje
"Paweł W. Olszta"
pawel.olszta at adv.pl
Thu Mar 11 12:59:25 CET 2004
Kamil Skalski wrote:
OFFTOPIC.
> public [Hygienic] make_code () : Expr {
> <[ def x = 1; bla (x) ]>
> }
Ładny sposób oznaczania, że funkcja ma być przefiltrowana przez makro.
To jeszcze nie działa, prawda?
Bo jeśli tak, to ja proponuję zacząć o tym myśleć, bo i tak będzie chyba
potrzebne do [Hygienic].
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 }
}
W ten sposób wyglądało by to mniej więcej jak properties w C#:
protected property Wallet
{
get { return m_wallet.Contents; }
set { m_wallet.Contents = value; }
}
Być może moglibyśmy też zdefiniować makro [Property]? :-) (ale chyba
musi być jakieś minimalne wsparcie od strony generatora kodu i systemu
typów).
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 :-)
More information about the devel-pl
mailing list