Dose_common.Util
return a list of unique elements. This algorithm runs in O(n) but is not stable . elements are returned in reverse order
A generic memoization function. To use with care as it allocates an hashtbl storing all results that will be released only on exit
Debug, ProgressBars, Timers and Loggers
module type Messages = sig ... end
Debug, Info and Warning messages are printed immediately on stderr. * Info messages are enabled per default. Debug and Warning messages * must be enabled explicitely
Ex : To use the Message framework, you should declare three functions * at the begin of each module as:
let debug fmt = Util.make_debug "MyModuleLabel" fmt let info fmt = Util.make_info "MyModuleLabel" fmt let warning fmt = Util.make_warning "MyModuleLabel" fmt
and then use these function as
debug "this is a message string %s" "a string"
To enable this handle, from the main program use the function
Debug.enable "MyModuleLabel"
include Util.Logging(struct let label = "label" end) ;;
module Progress : sig ... end
ProgressBars are printed immediately on stderr. * To be used, the **must** be created outside the functions where * they are used. * They can enabled or disabled (default)
module Timer : sig ... end
Timers are printed all at once by the dump
function on stderr. * They can enabled or disabled (default)
class type projection = object ... end
associate a sat solver variable to a package id
class identity : projection
identity projection
class intprojection : int -> projection
intprojection n
integer projection of size n