Modules have been debated fiercely in the Prolog world. Despite all counter-arguments we feel they are extremely useful because
Using modules is generally easy. Only if you write meta-predicates
(predicates reasoning about other predicates) that are exported from a
module good understanding of resolution of terms to predicates inside a
module is required. Here is a typical example from library(readutil)
.
:- module(read_util, [ read_line_to_codes/2, % +Fd, -Codes read_line_to_codes/3, % +Fd, -Codes, ?Tail read_stream_to_codes/2, % +Fd, -Codes read_stream_to_codes/3, % +Fd, -Codes, ?Tail read_file_to_codes/3, % +File, -Codes, +Options read_file_to_terms/3 % +File, -Terms, +Options ]). |