[nem-pl] static w interface

Michal Moskal malekith at pld-linux.org
Tue Nov 4 09:06:04 CET 2003


On Tue, Nov 04, 2003 at 12:04:44AM +0100, Lukasz Kaiser wrote:
> > 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 ... } ?

Dobre pytanie. Kompilator powinien się sypnąć na drugim przykładzie
(jeśli używasz zmiennych typowych klasy w funkcjach statycznych lub
zdefiniowanych w środku typach). Ale się nie sypnie (chyba), więc mamy
mały problem.

> 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 ?

'a where 'a :> IComparable ('a) `<` (x : 'a, y : 'a) =
  x.compare (y) < 0;
  
> Moze powinienem uzyc rozszerzenia skladniowego np. 
> deriveOrderable ( class List { ... } )
> ktore zaimplementuje mi wszystkie interface'y i wszystko co trzeba ?

To już zależy co chcesz zrobić.

-- 
: 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