Picatとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Picatの意味・解説 

Picat

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/09/28 01:17 UTC 版)

ナビゲーションに移動 検索に移動
Picat
パラダイム マルチパラダイム: 論理プログラミング関数プログラミング命令型プログラミング
登場時期 2013年
設計者 周能法(Neng-Fa Zhou)、Jonathan Fruhman
型付け 動的型付け
影響を受けた言語 Prolog
ウェブサイト http://www.picat-lang.org/
拡張子 .pi
テンプレートを表示

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

概要

Picatは、周能法(Neng-Fa Zhou)およびJonathan Fruhmanによって設計された。2012年12月に仕様が公開され、2013年5月に処理系がリリースされた[1]

Picatという名称は、次の単語の頭文字に由来する。

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

Picatのプログラムは、述語または関数の定義から構成される。述語または関数は、1個以上のルールによって定義される。

ルールにはバックトラックが可能なものとそうでないものとがあり、バックトラックが可能なルールを書くことによって、非決定的な述語を定義することができる。非決定的な関数は、定義することができない。

Picatは制約プログラミングをサポートしている。「ソルバーモジュール」と呼ばれる、cp(Constraint Programming)、sat(Satisfiability)、mip(Mixed Integer Programming)という三つのモジュールのいずれかをインポートすることによって、制約充足問題を記述することができるようになる。

コード例

Hello worldは、次のように書くことができる。

main => println('Hello, World!').

次の例は、引数が、空リストまたはすべての要素が0であるリストならば成功する、allzeroという述語を定義するプログラムである。

allzero([])    => true.
allzero([0|T]) => allzero(T).

次の例は、最大公約数を求めるgcmという関数を定義するプログラムである。

gcm(N, 0) = N.
gcm(N, M) = G, M >= 1 => G = gcm(M, N mod M).

次の例は、ソルバーモジュールとしてcpを使用して、部分和問題の解をすべて出力するプログラムである。

import cp.

subset =>
    V = [A, B, C, D, E, F, G],
    V :: [0, 1],
    A*2 + B*3 + C*5 + D*8 + E*13 + F*21 + G*34 #= 50,
    solve(V),
    print(V),
    fail.

このプログラムは、{2, 3, 5, 8, 13, 21, 34}という集合の部分集合のうちで、要素の和が50になるものを求めるという部分和問題の解をすべて出力する(解は3個存在する)。このプログラムが出力する解の一つである[0,1,0,0,1,0,1]というリストは、{3, 13, 34}という部分集合を意味している。

脚注

  1. ^ Kjellerstrand, Håkan. “My First Look At Picat as a Modeling Language for Constraint Solving and Planning (PDF)”. 2017年7月11日閲覧。

参考文献

  • Neng-Fa Zhou; Håkan Kjellerstr; Jonathan Fruhman (2015). Constraint Solving and Planning with Picat. Springer International Publishing. ISBN 978-3-319-25881-2 

外部リンク

関連項目




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Picat」の関連用語

Picatのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Picatのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのPicat (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS