This work presents a declarative framework to define local search procedures. It is achieved by combining neighborhoods through combinators which describes when neighborhoods need to be explored. They also allow to manage other aspects of search procedures such as stopping criteria, management of the solution, and meta-heuristics (eg. Simulated annealing). Our approach allows the developer to focus on these high-level concepts without worrying about their efficient implementation. Therefore, the development, understanding, communication, and testing procedures are more effective, and ultimately produce better search procedures.