::= (
v
key ( machine | world | stream | view | canon | atom | selector | value | transform )* hash? comment? )
We can use a view to bundle together atoms for display. If you think of an atom as representing a word, a name, a sentence, or a paragraph, then a view is a list of paragraphs you want to see in a certain order, like a document or a note.
This is a view (v v1)
with only one paragraph atom inside it.
(v v1 (@p1))
The viewer builds this MSL automatically and adds it to the stream along with the paragraph atoms as they are created so that they remain visible on-screen.
(v v1 (@p1) (@p2))
Writing a third paragraph without making other changes would result in another view added to the stream. The same view number, v1
, is used each time, indicating that this is a revised definition of that view.
(v v1 (@p1) (@p2) (@p3))
If an entire paragraph needs to go away, it can be removed with the viewer. Another view expression is recorded without that paragraph atom.
(v v1 (@p1) (@p3))
Notice that @p2
has not gone away. Neither has the previous view which included it. The engine keeps a full version of all the MSL instructions in sequence. This contains everything needed to rewind or reproduce any previous version of the system state.