
 record.pl -- Access compound arguments by name
record.pl -- Access compound arguments by name
This module creates a set of predicates to create a default instance, access and modify records represented as a compound term.
The full documentation is with record/1, which must be used as a directive. Here is a simple example declaration and some calls.
:- record point(x:integer=0, y:integer=0).
        default_point(Point),
        point_x(Point, X),
        set_x_of_point(10, Point, Point1),
        make_point([y(20)], YPoint),
 record(+RecordDef) record(+RecordDef)
- Define access predicates for a compound-term. RecordDef is of
the form <constructor>(<argument>, ...), where each argument
is of the form:
- <name>[:<type>][=<default>]
 Used a directive, :- record Constructor(Arg, ...)is expanded info the following predicates:- <constructor>_<name>(Record, Value)
- <constructor>_data(?Name, ?Record, ?Value)
- default_<constructor>(-Record)
- is_<constructor>(@Term)
- make_<constructor>(+Fields, -Record)
- make_<constructor>(+Fields, -Record, -RestFields)
- set_<name>_of_<constructor>(+Value, +OldRecord, -New)
- set_<name>_of_<constructor>(+Value, !Record)
- nb_set_<name>_of_<constructor>(+Value, !Record)
- set_<constructor>_fields(+Fields, +Record0, -Record).
- set_<constructor>_fields(+Fields, +Record0, -Record, -RestFields).
- set_<constructor>_field(+Field, +Record0, -Record).
- user:current_record(:<constructor>)
 
 current_record(?Name, :Term) current_record(?Name, :Term)
- True if Name is the name of a record defined in the module associated with Term and Term is the user-provided record declaration.
 current_record_predicate(?Record, ?PI) is nondet current_record_predicate(?Record, ?PI) is nondet
- True if PI is the predicate indicator for an access predicate to Record. This predicate is intended to support cross-referencer tools.