implement T; include "sys.m"; include "draw.m"; include "sort.m"; include "sh.m"; include "lists.m"; T: module { init: fn(nil: ref Draw->Context, argv: list of string); }; Data: adt{ i: int; }; SortData: adt{ gt: fn(this: self ref SortData, a, b: ref Data): int; }; SortData.gt(nil: self ref SortData, a, b: ref Data): int { return a.i > b.i; } init(nil: ref Draw->Context, nil: list of string) { sys := load Sys Sys->PATH; sort := load Sort Sort->PATH; cmd := load Command "/dis/ls.dis"; noncmd := load Lists Lists->PATH; if(sort == nil) sys->print("load sort: %r\n"); if(cmd == nil) sys->print("load cmd: %r\n"); if(noncmd == nil) sys->print("load noncmd: %r\n"); a := array[] of {ref Data(30), ref Data(10), ref Data(20)}; sort->sort(ref SortData(), a); sys->print("a=(%d, %d, %d)\n", a[0].i, a[1].i, a[2].i); }