PoPオブジェクトを生成するためにはどうしたらよいか,を説明します.
Integer(value)とインスタンス生成します. valueに浮動小数点数が指定されたときは,整数化されます.
Float(value)とインスタンス生成します. valueに整数が指定されたときは,浮動小数点数化されます.
String(value)とインスタンス生成します.
Atom(name)とインスタンス生成します.
Atom(name, x1, x2, .. , xn)または,キーワードargsにシーケンスを指定して
としてインスタンス生成します.Atom(name, args=(x1, x2, .. , xn)) Atom(name, args=[x1, x2, .. , xn])
Atom(name, x1, .. , xi, args=(xj, .. , xn))複合アトムを定義するのに,便利な方法があります. 例えば
a = Atom('a')としておいて
a(x1, x2, .. , xn)とすると,
Atom('a', x1, x2, .. , xn)と同じになります.
List(x1, x2, .. , xn)とインスタンス生成します.Atomと同じように
ともできます(キーワードはargsではなく,itemsです).List(items=(x1, x2, .. , xn)) List(items=[x1, x2, .. , xn])
List(x1, .. , xm, tail=xn)尾部に指定できるのは,NIL,リスト,変数のいずれかです.
List(items=(x1, .. , xm), tail=xn)
Clause(h, b1, b2, .. , bn)とインスタンス生成します. あるいは,
ともできます.Clause(h, body=(b1, b2, .. , bn)) Clause(h, body=[b1, b2, .. , bn])
事実 P0. => Clause(P0) 規則 P0 :- P1, P2, .. , Pn. => Clause(P0, P1, P2, .. , Pn) 質問 ?- P1, P2, .. , Pn. => Clause(None, P1, P2, .. , Pn)
Variable(name)とインスタンス生成します. 変数名のスコープは(最上位の)節です.
Variable()と生成された変数は無名変数といい,何とでも単一化されます.
とa = Atom('a') X = Variable('X') a(X, X)
Atom('a', Variable('X'), Variable('X'))は同値です.