[nem-pl] static w interface
Lukasz Kaiser
kaiser at tenet.pl
Tue Nov 4 00:04:44 CET 2003
On Mon, Nov 03, 2003 at 11:48:16PM +0100, Michal Moskal wrote:
> On Mon, Nov 03, 2003 at 11:31:20PM +0100, Lukasz Kaiser wrote:
> > No wlasnie - chcialem sobie napisac cos takiego, zeby bylo
> >
> > interface eq ('a) { (=) ( _ : 'a, _ : 'a ) : bool ; }
> >
> > interface comparable ('a) where 'a :> eq ('a) {
> > (<) ( _ : 'a, _ : 'a ) : bool ;
> > (*) (>) ( x : 'a, y : 'a ) = not ( ( x < y ) or ( x = y ) ) ;
> > }
> >
> > module list ('a) where ('a) :> comparable ('a) implements comparable('a){
> > 'a (<) ( x : list 'a, y : list 'a ) implements
> > comparable.(<) = match (x,y) with [| (l::ls, m::ms) -> if (l<m) ...
> > }
> >
> > Mam w zwiazku z tym takie pytania:
Hej.
> Wtedy sens ma tylku public lub internal. internal ma zasiêg jednego
> DLL/EXE, public -- wiadomo.
OK.
> class_body by³o przez minutê ;-) teraz ju¿ nie jest u¿ywane. update robi
> siê od razu.
Aaa, proxy, cache itp. Hmmm.
> To trzeba jeszcze przemy¶leæ. Ale teraz tak.
To jest OK przynajmniej na teraz.
> Operator to tylko inne nazwy funkcji statycznych. A funkcje statycznie
> *nie* mog± byæ w interface.
To mnie bardzo boli, no ale chyba musze jakos przeczekac do rozszerzen.
> class Foo { ... }
>
> Nie ma zmiennych, znaczy to jest monotyp (czy jak to siê nazywa, bez
> parametrów). Ale ja ciê chyba co¶ nie rozumiem.
Chyba to ja nie rozumiem. Czym sie rozni
class List { variant list 'a = ... ; static 'a list map ... } od
class List ('a) { variant list = ... to samo gdzieniegdzie bez 'a ... } ?
Inne pytanie - jak sobie symulowac funkcje wirtualne, abstrakcyjne czy
jakiestam, w kazdym razie chodzi o to zeby miec uniwersalny (<), (>),
(<=) itd. dla wszystkiego co implementuje jakas funkcje compare - jak to
zrobic ? Oczywiscie moge
let mk<= ( compare ) = fun (x,y) => if compare (x,y) > 0 then false else
true ;
ale pytam sie jak powinienem to zrobic najlepiej w Nemerle ?
Moze powinienem uzyc rozszerzenia skladniowego np.
deriveOrderable ( class List { ... } )
ktore zaimplementuje mi wszystkie interface'y i wszystko co trzeba ?
- lk
More information about the devel-pl
mailing list