Logtalk reference manual
Built-in predicate: create_category/4

create_category/4

Description

create_category(Identifier, Relations, Directives, Clauses)

Creates a new, dynamic category. This predicate is often used as a primitive to implement high-level category creation methods.

When using Logtalk multi-threading features, predicates calling this built-in predicate may need to be declared synchronized in order to avoid race conditions.

Template and modes

create_category(?category_identifier, +list, +list, +list)

Errors

Relations, Directives, or Clauses is a variable:
instantiation_error
Identifier is neither a variable nor a valid category identifier:
type_error(category_identifier, Identifier)
Identifier is already in use:
permission_error(replace, category, Identifier)
permission_error(replace, object, Identifier)
permission_error(replace, protocol, Identifier)
Relations is neither a variable nor a proper list:
type_error(list, Relations)
Directives is neither a variable nor a proper list:
type_error(list, Directives)
Clauses is neither a variable nor a proper list:
type_error(list, Clauses)

Examples

| ?- create_category(
        tolerances,
        [implements(comparing)],
        [],
        [epsilon(1e-15), (equal(X, Y) :- epsilon(E), abs(X-Y) =< E)]
     ).

See also

abolish_category/1, category_property/2, current_category/1
complements_object/2, extends_category/2-3, imports_category/2-3