In practice, value retrieval is accomplished by simply locating the value in the hybrid database corresponding to its key-sequence. The canon namespace exists independently and separately for each namespace in the database and is always searched first.
When it is necessary to rewind the stream and obtain previous values, the MSL text can be examined in reverse chronological order to build any previous version of the system state. The search is conducted in the following order:
(@WALT Walter Elias Disney) ⇒ A value defined in the reference itself.
(@WALT) ⇒ A value for this atom defined in the containing atom, searching backwards from the current expression to the beginning of the containing atom.
(@draft (@chapter-1 (@p1 @WALT))) ⇒ Repeat step 2 until we're not inside an atom.
(v disney-paper (c disney-people) (@draft)) ⇒ A value defined in the containing view, searching backwards from the last containing atom to the beginning of the view.
(s books (c famous-people) (v disney-paper)) ⇒ A value defined in the containing stream, searching backwards from the containing view to the beginning of the stream.
(w personal (c famous-people) (s books) (s screenplays) (s soccer)) ⇒ A value defined in the containing world, searching backwards from the containing stream to the beginning of the world.
(m david (@WALT Walt Disney) (w personal) (w business)) ⇒ A value defined in the containing machine, searching backwards from the containing world to the beginning of the machine.
References to an atom's metadata in the form (@atom-key :metadata-key)
are searched in the following order:
(@WALT :fullname Walter Elias Disney)
(v v1 (c disney-stuff) (@p1 (@WALT :fullname)))
(s disney-fiction (c characters) (@p1 (@WALT :fullname)))
(w thesis (c famous-people) (@p1 (@WALT :fullname)))
(m david (c heroes) (s disney-book (v draft (@p1 (@WALT :fullname)))))
In each namespace, MSL expressions have access to data defined by this search order:
A namespace that's earlier in the hierarchy can contain any later namespaces and, when it does, the containing atom becomes the "parent namespace" described in the search order.
(w astronomy
(c solar-system)
(v jupiter-notes (@p1) (@p2) …))
The entire (v jupiter-notes)
view has access to the (c solar-system)
canon because they are both defined inside the (w astronomy)
world.
This grouping method differs from other ordering systems because it respects time of insertion as well as grouping hierarchies. Not all of the data in the parent is accessible, only the data which was defined in time before the expression was written. This means that all MSL expressions have access to data from the past, but no expression has access to data written after it or in the future, unless that data is explicitly provided through a second (later) expression.
In practice, the viewer displays and works with the shortest form of MSL possible. Adding a second paragraph here only requires updating the view, not rewriting the entire reference.
(@p2 "If I have seen further, it is by standing on the shoulders of giants." ―Isaac Newton)
{.is-success}
(v whitepaper-draft (@p1) (@p2))
In general, if a value is provided, we are setting the value. If no value is provided, we are getting the value.
(s whitepaper
(@p1 This paper introduces (@Mimix), a future computer system for research, writing, collaborating, and teaching. (@Mimix) is inspired by the ideas of its forebears such as the (@Memex), (@NLS), and (@Xanadu). I hope to achieve with (@Mimix) what those platforms could not: a modern, deliverable system which can be used by anyone to augment his or her own intellectual work.)
(@p2 "If I have seen further, it is by standing on the shoulders of giants." ―Isaac Newton)
(v whitepaper-draft (@p1) (@p2))
(v whitepaper-draft (@p1))
(@p3 (@Mimix) (pronounced "mimics") is named after (@VANNEVARBUSH)'s (@1945) proposal for the (@Memex), a machine with similar goals.)
(v whitepaper-draft (@p1) (@p3)))