CONSTRAINTS AND FUNCTIONAL PROGRAMMING.