The new module implicitly imports the module eclipse_language,
which means that all ECLiPSe built-ins are visible there.
module(m) is equivalent to module(m,[],eclipse_language).
Note that module/1 is not a predicate, it can only occur as a directive in a compiled file. However, the console based ECLiPSe toplevel also interprets module/1 commands, but in the following way: when the module already exists, the toplevel-module (i.e. the context in which toplevel queries are interpreted) is changed to this module. When the module does not exist, it gets created and a warning is issued.
The system does not allow the atom [] to be used as a module name!
% A very small module:
:- module(m).
:- export hello/0.
hello :- writeln("Welcome to module m!").