Modularity
Modules
A Vadalog program can be declared as a @module
; in this way another program can @include
other modules forming a single Vadalog program which can be evaluated.
As such, @module
and @include
annotations defines dependencies between vadalog programs.
Vadalog supports named modules (e.g. @module("moduleName")
) and file modules (@module("/path/to/module_A.vada")
).
Dependency tree
In Vadacode, there is a handy way to have a glance over module structure, which is the Module dependency pane.
Let’s look at an example:

📒 root (1) 📄 main.vada (2) 📄 module_1.vada (3) 📄 module_a.vada (4) 📄 module_b.vada (5) 📄 module_z.vada (6)
1 | Repository root directory |
2 | Main program, which includes other modules |
3 | Contains @module("module_1"). |
4 | Contains @module("module_a"). @include("module_z"). |
5 | Contains @module("module_b"). |
6 | Contains @module("module_z"). |
Module symbols
Vadacode supports Symbols, hence you can press shift+ctrl+O/shift+cmd+O or check the Outline view to check all available symbols.
Vadacode shows all symbols included in the current program, included those imported by @include statements.
|

a
) and imported (b
) atomsCross-module references
Vadacode supports References; the provided references come from all parsed modules, and as such they include both the open program and those imported by @include
statements.

a
) and imported (b
) atoms