The following scopes (namespaces) are defined:
The global assignment
:= operator inserts variables to the module's global namespace.
a = 1 def globalAssign() a := 2 end globalAssign() print a
locals() returns the local namespace as a record.
# script "test.ds" a = 'hello'; b = 'world' print locals()
__file__:/src/test.ds a: hello b: world
import keyword is used to import modules. All built-in modules and all script files on the import path are available for importing.
When a module is first imported, its global namespace is initialized by executing all statements in the module's global scope. All modules that then import the module will receive a reference to the same record.
The import statement can also be used to make a copy instead of regular importing.
import record other
This imports other (from a file called other.ds somewhere on the import path), makes an owned copy of the record, and assigns it to a local variable named other. It is equivalent to the following:
import other other = Record(other)