'a #Uq_engines.engine -> ('a Uq_engines.final_state -> 'b Uq_engines.final_state) -> ['b] Uq_engines.engine