Picat

コンピュータ

Picat

ぱいきゃっと

Picatは、制約論理プログラミング言語であるB-Prologを発展させることによって開発された、論理プログラミングをベースとするマルチパラダイムの汎用プログラミング言語である。

Picatの開発者は、周能法(Neng-Fa Zhou)およびJonathan Fruhmanである。2012年12月に仕様が公開され、2013年5月に処理系がリリースされた。

Picatという名称は、次の単語の頭文字を並べたものである。

  • Pattern-matching
  • Imperative
  • Constraints
  • Actors
  • Tabling

Prologでは、式が評価されるのは、それがis/2や=:=/2などの一部の述語を呼び出すゴールの中に書かれた場合のみであるが、Picatでは、ゴールの中に書かれた項は、原則として、ゴールとして解決されるか、式として評価されるかのいずれかである。また、Prologでは、関数を定義することによって式の機能を拡張するということができないが、Picatでは、述語と同様に、ルールを書くことによって関数を定義することができ、それによって式の機能を拡張することができる。

Picatにおいては、通常のルールは、=>/2という演算子を使って記述される。この場合、その下に別のルールがあったとしても、バックトラックは発生しない。バックトラックが可能なルールを書くためには、=>/2ではなく、?=>/2という演算子を使う必要がある。このように、Picatでは、演算子の使い分けによってバックトラックの有無を決定することができるので、Prologのカット演算子に相当する演算子は、Picatには存在しない。

Picatは、制約充足問題(Constraint satisfaction problem, CSP)を解決するための、異なるモデルを採用した次の3種類のモジュールを含んでいる。cp(制約計画法)、sat(充足可能性)、およびmip(混合整数計画法)である。

Picatのソースファイルの拡張子は.piである。