[nem-pl] static w interface

Lukasz Kaiser kaiser at tenet.pl
Mon Nov 3 23:31:20 CET 2003


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
2) co ile sie w koncu robi update strony (kiedy class_body) ?
3) czy jak pisze w naglowku klasy / modulu ze 'a :> cos to musze to potem
   powtarzac przed funkcja ?
4) czy operatory moga normalnie byc w interface, a funkcje statyczne ?
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 ?
7) jesli chodzi o (*) - czy w ogole sa jakies mysli na temat jej robienia
   czy absolutinie nie i zostawiamy to dziedziczeniu / rozszerzeniom /...?

- lk




More information about the devel-pl mailing list