signature String = sig (* * Types *) eqtype string; (* * String constants *) (* * Binary Operations *) val ^ : string * string -> string; (* * Unary Operations *) val ord : string -> int and chr : int -> string (* * Predicates *) and < : string * string -> bool and <= : string * string -> bool and > : string * string -> bool and >= : string * string -> bool end; structure String : String = struct type string = string val op ^ = op ^ and ord = ord and chr = chr (* * Predicates *) and op < = op < : string * string -> bool and op <= = op <= : string * string -> bool and op > = op > : string * string -> bool and op >= = op >= : string * string -> bool end;