Namespaces

libxexpr considers an element's namespace to be part of its name and thus elements in a namespace other than the XEXPR namespace as are always distinct from functions defined by XEXPR. In addition, functions defined using <define> are defined in the XEXPR namespace.

libxexpr provides hooks for extending the XEXPR language by allowing handlers to be installed for other namespaces.

Elements which are in no namespace are treated as if they were in the XEXPR namespace.

Rationale

Being able to extend the XEXPR language is vital for it to be useful and namespaces are the obvious way to do this.