functor   (Datatype : Datatype.S) (Local_state : sig                                            type t = Datatype.t                                            val create : unit -> t                                            val clear : t -> unit                                            val get : unit -> t                                            val set : t -> unit                                            val clear_some_projects :                                              (Project_skeleton.t -> bool) ->                                              t -> bool                                          end) (Info : sig                                                         val name : string                                                         val dependencies :                                                           State.t list                                                         val unique_name :                                                           string                                                       end->   sig     val self : State.t     val name : string     val mark_as_computed : ?project:Project.t -> unit -> unit     val is_computed : ?project:Project.t -> unit -> bool     module Datatype :       sig         type t = Datatype.t         val ty : t Type.t         val name : string         val descr : t Descr.t         val packed_descr : Structural_descr.pack         val reprs : t list         val equal : t -> t -> bool         val compare : t -> t -> int         val hash : t -> int         val pretty_code : Format.formatter -> t -> unit         val internal_pretty_code :           Type.precedence -> Format.formatter -> t -> unit         val pretty : Format.formatter -> t -> unit         val varname : t -> string         val mem_project : (Project_skeleton.t -> bool) -> t -> bool         val copy : t -> t       end     val add_hook_on_update : (Datatype.t -> unit) -> unit     val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit   end