[nem-pl] static w interface

Michal Moskal malekith at pld-linux.org
Mon Nov 3 23:48:16 CET 2003


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:
> 1) w gramatyce przed interface mozne wstawic attrs, co to znaczy jak
>    interface jest z zasiegu namespace a nie zadnej klasy, np. w ncc/tree.n

Wtedy sens ma tylku public lub internal. internal ma zasięg jednego
DLL/EXE, public -- wiadomo.

> 2) co ile sie w koncu robi update strony (kiedy class_body) ?

class_body było przez minutę ;-) teraz już nie jest używane. update robi
się od razu.

> 3) czy jak pisze w naglowku klasy / modulu ze 'a :> cos to musze to potem
>    powtarzac przed funkcja ?

To trzeba jeszcze przemyśleć. Ale teraz tak.

> 4) czy operatory moga normalnie byc w interface, a funkcje statyczne ?

Operator to tylko inne nazwy funkcji statycznych. A funkcje statycznie
*nie* mogą być w interface.

> 5) jesli funkcje statyczne moga, to jak ich potem uzyc, moge tak napisac
>    jak wyzej, po prostu l < m ?
> 6) czemu w naglowku typu przy class / module mozna pominac wypisanie
>    zmiennych (np. w ncc/tree.n) ? W ogole co dokladnie ma znaczyc
>    type_header i kiedy musi byc niepusty ?

class Foo { ... }

Nie ma zmiennych, znaczy to jest monotyp (czy jak to się nazywa, bez
parametrów). Ale ja cię chyba coś nie rozumiem.

> 7) jesli chodzi o (*) - czy w ogole sa jakies mysli na temat jej robienia
>    czy absolutinie nie i zostawiamy to dziedziczeniu / rozszerzeniom /...?

Ja raczej nie mam myśli żadnych na ten temat...

Spać.

-- 
: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: When in doubt, use brute force. -- Ken Thompson : {E-,w}-- {b++,e}>+++ h




More information about the devel-pl mailing list