使用庫(記錄)使用命名欄位的術語

[record][1] 庫提供了使用命名欄位建立複合術語的功能。指令:- record/1 <spec> 編譯為一組謂詞,用於初始化,設定和獲取 <spec> 定義的術語中的欄位。

例如,我們可以使用命名欄位 xy 定義 point 資料結構:

:- use_module(library(record)).

:- record point(x:integer=0,
                y:integer=0).

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

?- default_point(Point), point_x(Point, X), set_x_of_point(10, Point, Point1).
Point = point(0, 0),
X = 0,
Point1 = point(10, 0).

?- make_point([y(20)], Point). 
Point = point(0, 20).

?-  is_point(X). 
false.

?- is_point(point(_, _)).
false.

?- is_point(point(1, a)).
false.

?- is_point(point(1, 1)).
true.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */