Update meta-predicate note
Remove item from todo list
Backtrack when no choices in index
When consulting modules, add them to the import list of the user module
The export list works now I think :)
Changes to the parser:
* each file MUST start with a :- module(ModuleName, ExportList) directive
* the col variable is removed
* the error message now include the filename and a different better format
More work on modules. Now it is built in to the wam instructions which module to run code from. the : operator allows for changing the module that is used by the wam but only for 1 instruction
More work on modules:
Add a use_module directive which will add the module to the current module's import list. When loading code all the modules specified in use_module is loaded as well if they aren't already.
It is still not possible to export predicates or use predicates directly, so : must be used.
First very WIP work on a module system.
The idea is that all code is still stored in m->code, but the labels
have a module name attached to them which can be checked.
As of now the export list of :- module(ModuleName, ExportList) is only
parsed if it is empty, and everything is exported by default.
It is impossible to import other modules, but the new (:)/2 operator
can be used to call a predicate from another module. The operator
leaves one redundant choicepoint behind which is not so nice.
Make throw/1 print when an exception is unhandled. In the future, more detailed error messages can be added here
Remove unused struct member 'cut'
Since the exception is put on the heap, make sure the top of heap is not changed to a point below it.
Turn of debugging and remove a print