3.2 Reading in Programs

A program is made up of a sequence of clauses and directives. The clauses of a predicate do not have to be immediately consecutive, but remember that their relative order may be important (see Procedural).

To input a program from a file file, just type the filename inside list brackets (followed by . and <RET>), thus:

     | ?- [file].

This instructs the interpreter to read in (consult) the program. Note that it may be necessary to enclose the filename file in single quotes to make it a legal Prolog atom; e.g.:

     | ?- ['myfile.pl'].
     | ?- ['/usr/prolog/somefile'].

The specified file is then read in. Clauses in the file are stored so that they can later be interpreted, while any directives are obeyed as they are encountered. When the end of the file is found, the system displays on the standard error stream the time spent. This indicates the completion of the query.

Predicates that expect the name of a Prolog source file as an argument use absolute_file_name/3 (see Stream Pred) to look up the file. If no explicit extension is given, this predicate will look for a file with the default extension `.pl' added as well as for a file without extension. There is also support for libraries.

In general, this query can be any list of filenames, such as:

     | ?- [myprog,extras,tests].

In this case all three files would be consulted.

The clauses for all the predicates in the consulted files will replace any existing clauses for those predicates, i.e. any such previously existing clauses in the database will be deleted.

Note that consult/1 in SICStus Prolog behaves like reconsult/1 in DEC-10 Prolog.