goo blog サービス終了のお知らせ 

まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

3112. PROLOG解説、その2

2020年07月16日 | 日記

 昨日、動作が妙になったと思っていたDP-X1Aアイマスバージョンは、どこかのプログラムの間違い動作らしく、電池をすっからかんにして完全リセットすると戻りました。この機種は電池が取り外せないのでこうした、というかこうなってしまった感じ。

 論理型プログラミング言語、PROLOGのデータは、項(term)と呼ばれています。数学や論理学の項のことです。英語のニュアンスとしては単に言葉、特に技術的な用語・述語の感じです。しかし、Prologの文脈で、日本語で述語と言ってしまうと、真偽が決定できる文章、つまり述語(predicate)になってしまうので、項と呼ばれているみたいです。

 単純項と呼ばれるものが基礎的なデータ型で、定数と変数です。
 定数にはアトムと数があります。元々のPROLOGでは数はC言語で言うint、つまり1アドレスに入る符号付き整数だけ、というのが普通の時代がありました。64bit版AZ-Prologでは、整数と実数の区別があって、整数は符号付き64bit整数、実数はIEEE倍精度浮動小数点数(64bit)です(混在させると自動変換されて普通に加算とかになるのはC言語などと同様)。

 アトム(atom)は物理・化学の原子のアトムのことで、LISPのアトムと同じ意味。これが本来のPROLOGの単純データです。C言語などでは直接はデータとして扱えないので、計算機入門を済ませてしまった方は、かえって分かりづらく感じるはずです。
 具体的には、「+」や「=」や「if」や「while」や「sqrt」や「cos」の事で、今のLISPでは記号(symbol)と呼ばれているものです。ifをiとfに分解すると意味が無くなるので原子と呼ばれます。C言語でもLISPでも、変数名や関数名になります。Prologでは述語名や関数名になります。
 ですから、C言語などの普通の計算機言語ではアトムはコンパイラが意識しているだけで、つまり文法上だけの存在です。しかし、LISPやPROLOGでは基本データです。識別子として使い、つまり、「alice = alice」が真で、「alice = bob」が偽になる、これだけのこと(LISPではeq関数)。定数なのか関数名なのか、何を意味するのかは出現場所に依存します。
 ここは大変重要なので、多分、どこかに続きます。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする