There are constraint libraries for various
languages, including very
successful commercial products. The good thing of this approach to
introducing constraint solving to a language is that everything is
done in one language. The implementers do not need
to implement and the users do not need to learn a new language. The
bad thing is the lack of flexibility. The syntax for constraints is
usually unnatural, especially for libraries in Java which does not
support macro expansion and operator overloading. In addition, it is
still hopeless now to implement a fast constraint solver in Java.