CondMod: module { PATH: con "condmod.dis"; init: fn(nil: ref Draw->Context, argv: list of string); Cond: adt[ValT] for { ValT => less: fn(n: ValT, m: ValT): int; } { name: string; min, max: ref ValRef->Val[ValT]; # higher-level convenience constructors range: fn[ValT](name: string, min, max: ValT): ref Cond for { ValT => less: fn(n: ValT, m: ValT): int; }; equal: fn[ValT](name: string, val: ValT): ref Cond for { ValT => less: fn(n: ValT, m: ValT): int; }; zero: fn[ValT](name: string): ref Cond for { ValT => less: fn(n: ValT, m: ValT): int; }; }; };