Location : Home > Languages > Perl > Package
Title : Language::Prolog::Types - Prolog types in Perl.
Toolbox Logo

名称

 Language::Prolog::Types - Prolog の型


概要

use Language::Prolog::Types::overload;

use Language::Prolog::Types qw(:ctors);

$atom=prolog_atom('foo');
$list=prolog_list(1,2,3,4,5);
$functor=prolog_functor('foo',1,2,3,'bar');
$nil=prolog_nil;


use Language::Prolog::Types qw(:is);

print "$atom is an atom\n" if prolog_is_atom($atom);
print "$list is a list\n" if prolog_is_list($list);
print "$nil is nil\n" if prolog_is_nil($nil);

use Language::Prolog::Types qw(:short);

$atom=A('foo');
$list=L(1,2,3,4);
$functor=F('foo',1,2,3,'bar')

print "$atom is an atom\n" if isA($atom);
print "$list is a list\n" if isL($list);
print "$nil is nil\n" if isN($nil);

概要

 Language::Prolog::Types は Perl において Prolog の型を実装するためのモジュールの集合である。


説明

 本モジュールは Perl において項の型をテストしたり、Prolog と Perl の間のデータ変換をするために Prolog の項を生成するためのサブルーチンをエクスポートする。Perl のスカラ(数または文字列)を直接 Prolog の原子項として用いるため Prolog の原子項のコンストラクタもないことに気づくだろう。また Perl のリスト参照を Prolog のリストとして使うことができ、Perlの undef を Prolog の nil ([])として使うこともできる。

エクスポートされるタグ

 サブルーチンは3つのタグに分類される。

:is

 項の型をテストするサブルーチンである。

prolog_is_atom($term)

 $term が妥当な Prolog の原子項であれば(Perl の数値または文字列)であれば true を返す。

prolog_is_nil($term)

 true if $term が Prolog の nil [] であれば true を返す。Perl の undef と Prolog の nil は等価である。

prolog_is_list($term)

 $term が Prolog のリストであれば true を返す。Prolog の nil はalthough represented with the 空のリスト [] を表すけれどもこれはリストではないことには注意すべきである。

prolog_is_list_or_nil($term)

 $term が Prolog のリストまたは nil であれば true を返す。

prolog_is_functor($term)

 $term が Prolog の関数子(functor)でれば true を返す。リストはlist are formed with the 関数子 '.'/2 で形成されることに注意すべきである。

prolog_is_variable($term)
prolog_is_var($term)

 $term が Prolog の変数であれば true を返す。

prolog_is_ulist($term)

 $term が Prolog の無限リストであれば true を返す。(リストの最後が nil でない)

prolog_is_string($term)

 $term が文字列に変換することができ、その要素が [0..255] の範囲の整数であれば true を返す。.

:ctors

 新たに Prolog の項を生成するサブルーチンである。

prolog_list(@terms)

 @terms から構成される新たな prolog のリストを返す。

prolog_ulist(@terms, $tail)

 @terms と末尾が $tail から構成される新たな prolog のリストを返す。

prolog_functor($name, @args)

 名称が $name で引数が @args であるような新たな Prolog の関数子を返す。

prolog_variable($name)
prolog_var($name)

 $name という名称の新しい Prolog 変数を返す。

prolog_atom($atom)

 通常の Perl 文字列及び数値が Prolog 原子項を表現するために用いられているので、本関数は引数のみが文字列に変換されることを保証するものである。

prolog_nil()

 Prolog の nil [] を返す。

prolog_string($string)

 Prolog の文字列を返す。これは $string の ASCII コードのリストである。

prolog_chain($ftr, $term1, $term2, ..., $termn, $termo)

 以下のような Prolog の構造を生成する。

$ftr($term1,
     $ftr($term2,
          $ftr($term3,
               $ftr(...
                        $ftr($termn, $termo) ... ))))

 また

prolog_chain($ftr, $term)

は以下のものを返すことに注意すること。

$term

prolog_opaque($object)

 Prolog から直接使用されないが Perl にコールバック時に渡すだけのオペーク参照として Prolog にオブジェクトを渡すことを告げるための proxy opaque オブジェクトを生成する。

:util

 Prolog のデータを Perl 用に変換するサブルーチンである。

prolog_list2perl_list($term)

 Prolog のリストを Perl の配列に変換する。Prolog のリスト表現のあらゆる異なる可能性を検討したものである。

prolog_list2perl_string($term)

 Prolog のリストを Perl の文字列に変換する。リストの全ての要素は [0..255] の範囲の整数であるか、指定された例外でなければならない。

:short

 面倒くさがりのプログラマのために :is :ctor を簡約化して含むグループである。


参考資料


著者

 Salvador Fandino, <sfandino@yahoo.com>


著作権とライセンス

 Copyright 2002-2005 by Salvador Fandino

 本プログラムはフリーソフトウェアであり、Perl 本体と同等の条件で修正/再配布してもよい。

Toolbox Logo
Updated : 2007/08/09