Namespace is a (class 9) object in Dyalog APL. Namespaces are analogous to nested workspaces.
'Flat' APL Workspace Workspace with Namespaces .OLD-------------------. .NEW-------------------. | | | FOO MAT VEC | | DISPLAY | | .Util----------. | | | | |DISPLAY | | | FOO MAT VEC | | |... | | | | | '--------------' | | WsDoc_Init | | .WsDoc-------------. | | WsDoc_Xref | | |Init .prt-..fmt--.| | | WsDoc_Tree | | | |Init||line || | | WsDoc_prt_init | | |Tree | || || | | WsDoc_current_page | | |Xref |page|| || | | ... | | | '----''-----'| | | | | '------------------' | '----------------------' '----------------------'
They provide the same sort of facility for workspaces as directories do for filesystems. The analogy, based on DOS, might prove helpful:
| Operation | Windows | Namespace | 
|---|---|---|
| Create | mkdir | )NS or ⎕NS | 
| Change | cd | )CS or ⎕CS | 
| Relative name | dir1\dir\file | NS1.NS2.OBJ | 
| Absolute name | \file\file | #.NS.OBJ | 
| Name separator | \ | . | 
| Top (root) object | \ | # | 
| Parent object | .. | ## | 
They provide lexical (as opposed to dynamic) local names. This means that a defined function can use local variables and functions which persist when it exits and which are available next time it is called.
Just as with the provision of directories in a filing system, namespaces allow us to organise the workspace in a tidy fashion. This helps to promote an object oriented programming style.
This means that the object need use only a single name in its namespace.