module type Handler = sig type t val apply: t -> State.t -> State.t end type t = E : 'a * (module Handler with type t = 'a) -> t