MSL provides high-level operations for creating and destroying atoms, building and applying metadata, recording and sharing streams, and accessing and editing these elements.
Atom | Comment | Canon | Datatype | Format | Hash | Key | Machine | Prelude | Selector | Stream | Transform | Value | View | World
App | Audio | Binary | Code | Date | Image | Number | Time | Video
Prelude
Machine
World
Stream
View
Canon
Atom
Datatype Selector
Format
Key
Metadata Selector
Regex Selector
Value
Bracketed Transform
Hash
Comment
::= prelude | machine | world | stream | view | canon | atom | selector | value | transform | hash | comment
MSL syntax consists of prelude, machine , world , stream , view, canon, atom, selector, value, transform, hash, and comment elements.
An MSL program is any series of MSL expressions in order which are themselves valid. An MSL expression whose hash value does not equate to the hash of the previous expression is also invalid and cannot be interpreted.
MSL is built from Lisp-style S-expressions. MSL differs from Lisp in the way it processes functions and arguments, so Lisp expressions cannot be directly included inside MSL nor vice-versa. MSL code can only contain another MSL code. The beginning of MSL expressions inside a text file can be indicated by a prelude but this is not required to interpret a file or fragment.
When conflicts arose, compromises were made in this order of priority.