NB - Paraflow currently does not really implement modules yet.
NB - The desciption here is subject to much change.

ParaFlow has an interesting relationship between files, modules, and objects.

A file parses out as a series of declarations.  Unless a declaration is
explicitly 'public' it is local to the file.  Since ParaFlow is a two pass
compiler, there is no need for a separate interface file as is the case
with .c and .h files in C.   A file is a module.   A file can also act as
an object.

Consider a file named config.pf with the following contents:

string userName;
private string encryptedPassword;
string homePage;

to checkPassword(string password) into (boolean match)
    return encrypt.md5(password) == encryptedPassword;

to setPassword(string password)
    encryptedPassword = encrypt.md5(password);

This file might be used by another module as so:

import "config"

print("Please enter password: ");
string password = getSecretText();
if (!config.checkPassword(password))
    abort("Bad password");

Since ParaFlow allows executable statements outside of a 
function declaration, a method is needed to run these
statements in a file.  This is the run function.

config.run();

Note the file could also be treated as an object:

objectify "config"

config user;
user.userName = "jim"
user.homePage = "www.soe.ucsc.edu/~jim"
user.setPassword("bigSecret");
config superuser;
superuser.userName = "root"
superuser.setPassword("biggerSecret");

All modules that imported config would in a sense share an
instance of config.


