functor (Puzzle : PUZZLE->
  sig val run : Puzzle.state -> Puzzle.move list -> unit end