Experience using constrain programming to solve real-life problems has shown that finding an efficient solution to a problem
often requires experimentation with different constrain solvers or even building a problem-specific solver. HAL is a new constrain
logic programming language expressly designed to facilitate this process. In this paper we examine different ways of building
solvers in HAL. We explain how type classes can be used to specify solver interfaces, allowing the constrain programmer to
support modelling of a constrain problem independently of a particular solver, leading to easy “plug and play” experimentation.
We compare a number of different ways of writing a simple solver in HAL: using dynamic scheduling, constrain handling rules
and building on an existing solver. We also examine how external solvers may be interfaced with HAL, and approaches for removing
interface overhead.