Minilight: module { init: fn(nil: ref Draw->Context, nil: list of string); }; Vector: adt { x, y, z : real; negate : fn(v: self ref Vector); add : fn(v: self ref Vector, o : ref Vector); sub : fn(v: self ref Vector, o : ref Vector); mul : fn(v: self ref Vector, o : ref Vector); is_zero : fn(v: self ref Vector) : int; dot : fn(v: self ref Vector, o : ref Vector) : real; unitize : fn(v: self ref Vector) : ref Vector; };