Scala上の制約プログラミング用ドメイン特化言語Coprisについて  [in Japanese] Domain-Specific Language Copris for Constraint Programming in Scala  [in Japanese]

Access this Article



本論文では,オブジェクト指向言語と関数型言語が融合されたScala言語上に,制約プログラミング用のドメイン特化言語(DSL; Domain-Specific Language)として開発したCopris (Constraint Programming in Scala)について述べる.Coprisは,Scalaのプログラマが簡潔に制約充足問題(CSP)や制約最適化問題(COP)を記述できることを目的に設計したものであり,既存のJava上の制約プログラミング用APIであるJSR-331等よりも高い記述力を提供している.バックエンドの制約ソルバーとしては,国際制約ソルバー競技会で2年連続グローバル制約部門で優勝したSAT型制約ソルバーSugarを用いており,制約ソルバーとしての性能も高い.本論文では,Coprisの設計について説明した後,いくつかのプログラミング例を紹介することで,Coprisを用いたソフトウェア開発の利点を明らかにする.

In this paper, we explain Copris (Constraint Programming in Scala) system which is developed as a Domain-Specific Language (DSL) for constraint programming embedded in Scala programming language. Copris is designed to help Scala programmers to be able to easily solve Constraint Satisfaction Problems (CSP) and Constraint Optimization Problems (COP), and offers richer description power than existing CSP languages, such as JSR-331, a standardized constraint programming API for Java. Copris also provides a high performance constraint solving since constraint solver Sugar is used as its backend which won at global constraint categories of the international CSP solver competitions in two consecutive years. In this paper, we explain the effectiveness of using Copris by showing some example programs after describing the design overview of Copris DSL.


  • Computer Software

    Computer Software 29(4), 4_114-4_129, 2012

    Japan Society for Software Science and Technology


Page Top