Constraint Programming over Multiple Finite Domain

Created a version with ST monad.