The simplest form of an expression which specifies a key alone without a value. Any expression which contains a 1-form expression is, itself, 1-form. Every 1-form expression must be able to be immediately resolved into 2-form in order to be accepted by the engine. So named because it has only one element, a key.
The full form of an expression which specifies a key and a value. Every expression inside a 2-form expression must, itself, be 2-form. A 2-form expression is fully portable and has no dependencies. So named because it has two elements, a key and a value.
(@WALT Walt Disney :wife (@LILLIAN Lillian Disney))
A compact, portable form of an expression rewritten so that the first invocation of each atom and every subsequent change to it are in 2-form while later or intervening recall-only invocations are in 1-form. So named because it combines 2-form and 1-form (2+1).
(c disney-canon (@WALT Walt Disney :birthdate 1901 :birthplace Chicago, IL)) (@p1 (@WALT) was an American inventor and businessman. (@WALT Walt) was born in (@WALT:birthplace) in (@WALT:birthdate).)
A snapshot which is saved to disk, usually indicated by a data type. An archive can be optimized by rewriting it in 3-form before saving.
(msl art-curriculum :professor (@WARHOL Andy Warhol)) (c books (@pizza Why a Painting is Like a Pizza :amazon [https://www.amazon.com/Why-Painting-Like-Pizza-Understanding/dp/0691090521]) (@wilcox Blue and Yellow Don't Make Green :amazon [https://www.amazon.com/gp/product/B00HTK0JDM/ref=dbs_a_def_rwt_bibl_vppi_i1])
The (@) or atom namespace. Atoms in this namespace cannot contain atoms from any other namespace, but they can have subatomic values.
(@h Hydrogen :number 1)
The fundamental unit of data storage. Atoms are identified by a unique key within their namespace. They are assigned values via expressions and recalled according to evaluation rules. Atoms can have their values affected by selectors and transforms.
(w disney-project (c disney-canon [file:///c:/my-documents/disney/disney-canon.msl]) (v draft-paper (@p1 (@WALT) was an American inventor and businessman, born in (@WALT:birthdate).)))
The use of metadata to store information about the source of an expression's value, such as its authors, dates, or languages. Attribution can result in multiple values for the same metadata key.
(@MICKEY Mickey Mouse :creator (@WALT) :creator (@UB-IWERKS))
A transform written in square brackets which contains a filespec or URL. The transform returns the file or value found at the location. Often used with data types to store non-text data.
(v declaration [https://ia800305.us.archive.org/29/items/unitedstatesdecl00001gut/when12.txt])
An example MSL stream cited in the Specifications which shows how alternate canon can be applied to the same atoms using two different views.
(s burroughs-intro (c algol-60 (@p1 …) (@p2 …)) (c algol-68 (@p1 …) (@p2 …)) (v intro-to-algol (@p1) (@p2)) (v algol-intro-60 (c algol-60) (v intro-to-algol)) (v algol-intro-68 (c algol-68) (v intro-to-algol)) (v published-book (v algol-intro-60)) (v published-book (v algol-intro-68)))
The specialized (c) namespace which is evaluated first inside the other namespaces. It provides a layer of data protection through reset values. Canon can only contain other canon or atoms.
(c english-class (c romeo-juliet (@romeo Romeo Montague) (@juliet Juliet Capulet)))
A form of lifting in which the all of an atom's metadata from every invocation in a stream is rewritten as a single 2-form expression. The resulting canon expression can be lifted to a higher namespace and used to generate a compact 3-form of the stream.
(@WALT Walter Elias Disney) (@WALT :born 1901) (@WALT :birthplace (@CHICAGO Chicago, IL))
(@WALT Walter Elias Disney :born 1901 :birthplace (@CHICAGO Chicago, IL)))
Text after // which appears at the end of an expression but is ignored. Comments are not retrieved by evaluation and are not hashed but are stored in MSL text.
(@WALT Walt Disney //common test expression used to demo MSL)
The process of building an atom's value or metadata value from (the same or different) atom or metadata values, alone or in combination with literal inline values. Used to apply data types or formatting to a sequence of values or to preserve a complex value for later use. Formats can also be composited.
(@DONALD Donald Duck :nephews (@huey), (@duey), and (@louie))
The method of chaining the value from a selector or transform to the next selector or transform in the expression, modeled after the lambda calculus.
(@WALT Walter Elias Disney /Walter/ Walt /Elias/ E.) ⇒ Walt E. Disney (@WALT (@WALT) /Walt/ (f bold)) ⇒ Walt sent to bold function in viewer
A selector in the
(d) namespace which triggers special functions in the engine. Frequently used to assist the engine in storing and the viewer in displaying non-text data.
(@song Imagine [http://…] (d mp3) (f song-player))
Provides an interpreter for MSL expressions along with storage via the hybrid database. Accepts and returns only MSL expressions. Typically accessed by a viewer via a WebSocket. Nebula also supports an administrative API accessed by the
admin wire. In normal operation, the hybrid database preserves all values, even through restarts, without a separate saving step.
(@VER) ⇒ (@VER 2.2.1). Returns the version of the connected streams server. (@CLEAR) ⇒ (@CLEAR). Erases the entire hybrid database. (@SAVE) ⇒ (@SAVE). Saves a timestamped snapshot of the hybrid database to disk.
The process of resolving a 1-form expression into 2-form according to the namespace hierarchy and the rules defined in the Specifications and taking into account the past and present values of the referenced atoms in the hybrid database.
(@WALT) ⇒ (@WALT Walt Disney :birthplace Chicago, IL :wife (@LILLIAN Lillian Disney))
A syntactic element of the MSL language modeled after Lisp s-expressions. Expressions are enclosed in parentheses and follow the general form: (key-sequence value). Keys, bracketed transforms, metadata selectors, regex selectors, hashes, and comments are not MSL expressions.
(d mp4 (f video-player)) (c movies (d mp4) (@citizen-kane [file:///c:/movies…]) (@boogie-nights [file:///c:/movies…]))
The literal value of a bracketed transform stored in the atom's bracketed transform namespace and used to return an atom or metadata value from a local or network drive.
A transform which can run arbitrary code in the viewer, identified by its key. The invoked viewer function receives the preceding value in the expression as a parameter, along with any metadata supplied inside the format expression. Used to format or alter data beyond its plain text representation. A format transform can optionally return a value.
(@payment-3 1200 (f currency usd :decimals 2)) ⇒ $1,200.00
The programming style described by Backus in which every function takes only one parameter and returns only one parameter, both of which are fully defined. No function may accept, pass, or return a null value.
(@train-ticket :id 33142 (f timeline))
The result of running an expression through a hashing algorithm. The hash value obtained is recorded in the subsequent instruction, forming a chain.
(@WALT Walt Disney :birthday 1901 :wife Lillian #50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c //comment)
The internal storage used by the engine to quickly evaluate expressions. Contains only the most recent value of each atom.
(@WALT Walt Disney (d person) (f bio inventor) :birthplace Chicago, IL :wife (@LILLIAN Lillian Disney))
|@||WALT||:||wife||=||(@LILLIAN Lillian Disney)|
The combination of a hash table and MSL text which can be used to recall present expression values or rewind values from the past.
A single appearance of an atom in narrative text. The same atom can appear with different values in different invocations. A 2-form invocation supplies its own value. A 1-form invocation's value depends on the evaluation of previous expressions in the MSL text.
(@WALT Walt Disney) (@WALT) (@p1 (@WALT) first launched (@DISNEYLAND Disneyland) as a television program on the then-fledgling (@ABC ABC) network.)
An atom's unique identifier within its namespace. Every invocation of the key within the namespace refers to the same atom.
(@ invoice-22135 …)
The complete path to where a value resides in the hash table, including all its containing namespaces in sequence, its atom key, and its subatomic keys, if any.
(@WALT :birthday 1901)
A special form of rewriting in which one or more atoms is elevated to a higher namespace, changing its evaluation rules going forward.
(v science-paper (@p1 The first element in the periodic table is (@h hydrogen) with an atomic number of (@h :number 1).))
(c periodic-table (@h hydrogen :number 1))
(@p1 The first element in the periodic table is (@h) with an atomic number of (@h:number).)))
(m) namespace which represents an entire physical or virtual machine and all the worlds, streams, views, canon, and atoms it knows about.
(m my-machine (w school-world (c school-canon) (s art-history (v boticelli-paper (@p1 …)) (v notes …))) (w work-world …))
The process of integrating atoms from one stream into another while resolving any key collisions. Atoms which should retain the same keys can be combined as in canonization. Atoms which are different can have their keys changed before merging.
(v disney-story (@p1 (@WALT Walt Disney :born 1901 :died 1966 :company The Walt Disney Company :network (@ABC ABC) was an American inventor and businessman.))
(v cronkite-story (@p1 (@WALT Walter Cronkite :born 1916 :died 2009) reported on the death of Walt Disney in 1966 from the (@CBS CBS) network where he was an anchorman. (@CBS) would later be eclipsed in size by (@ABC), which was purchased by The Walt Disney Company in 1996.)
(@p1 (@WALTER-CRONKITE Walter Cronkite :born 1916 :died 2009) reported on the death of (@WALT) in 1966 from the (@CBS CBS) network where he was an anchorman. (@CBS) would later be eclipsed in size by (@WALT:network), which was purchased by (@WALT:company) in 1996.)
A subatomic namespace which belongs to each atom. Within the namespace, any number of unique keys can exist.
(@gardners Gardner's Art Through the Ages :first-edition 1926 :latest-edition 2004 :wiki [https://en.wikipedia.org/wiki/Gardner's_Art_Through_the_Ages])
The syntactic part of an expression beginning with a colon (
:) which selects a key in the atom’s metadata namespace.
The entire ecosystem of MSL, a viewer, and an engine. Can also refer to the machine
An example MSL stream cited in the Specifications which demonstrates many of the core concepts of the language.
(s beauty (c clairol-product (v miss-clairol (@miss-clairol-27 Lightly Blonde :no 27 :family blonde :box [file:///d:/box/clairol%20images/miss-clairol/27.jpg]) :name Miss Clairol))) (v haircolor-review (@p1 (@miss-clairol-27 Blonder than Bond) is what they'll say.) (@p2 Does she or doesn't she? (f italic) Only her hairdresser knows for sure. In this case, she does. With (@miss-clairol-27 :full-name (v miss-clairol :name) (@miss-clairol-27 :no)) (f bold) to be exact, or "(@miss-clairol-27)," as the box puts it.)))
Mimix Stream Language, a functional programming language for representing text review and editing sessions in a viewer and engine.
A series of MSL expressions executed in order. Typically stored in a file or memory buffer.
(msl my-music-project :author John Cage) (c definitions [file:///home/mimix/music/glossary.msl]) (c notation (@pitch …) (@duration …) (f ebnf)) (w serial-music (s recordings [file:///home/music/musique-concrete.files] (d audio flac)) (w papers (s on-pitch (v draft (@p1 …)) (v draft (@p1 …) (@p2 …))))
A method of grouping atoms according to MSL evaluation rules. An atom cannot contain an atom which is higher up in the namespace hierarchy, but it can retrieve its values by reaching.
(m my-machine (w work-world (c work-contacts (@cartier-bresson Henri Cartier-Bresson :phone IF-3321 :occupation photographer))) (w personal-world (c personal-contact (@henri (w work-world (@cartier-bresson)))))) (w personal-world (@henri:phone)) ⇒ IF-3321
(c), and atom
(@) namespaces, in that order.
A system for deploying MSL applications which combines a viewer and local engine and allows access to remote engines.
The process of retrieving a value from an atom higher up in the namespace hierarchy. Values cannot be set in the higher namespace by reaching.
(v photo-blog (@p1 (s history-of-photography (@edwin-land)) was the inventor of the Polaroid Land camera which bore his name.))
The process of converting an existing document which is not MSL, such as plain text, a word processing file, or a PDF, into MSL text. Recasting is performed by viewers and typically represented by a bracketed transform.
(v patient-record [file:///c:/scans/scanned-doctor-notes.pdf])
The viewer's process of generating MSL expressions in response to user interactions, such as reading, writing, annotating, or editing text.
(msl hawaii-notes) (@shave-ice Try shave ice. Azuki beans. North store.) (@shave-ice /store/ shore.) ⇒ Try shave ice. Azuki beans. North shore. (@shave-ice :best-place (@matsumoto Matsumoto Shave Ice)) (@matsumoto :website [http://matsumotoshaveice.com]) (@shave-ice Try shave ice. Azuki beans. North store. /store/ shore :best-place (@matsumoto Matsumoto Shave Ice :website [http://matsumotoshaveice.com])
A regular expression provided as the literal value in a regex selector. Stored separately by the engine in a subatomic namespace.
(@versailles Château de Versailles /\S*/) ⇒ Château
A selector which applies a regular expression to the preceding value and returns its result. If followed by a value, the new value replaces the result in the original expression.
(@versailles Château de Versailles :premier-roi Louis XV) (@versailles :premier-roi /V/ IV) ⇒ Louis XIV
In a 1-form expression, the value of an atom or its metadata retrieved from canon which overrides any previous 2-form invocation.
(c (@pu plutonium :number 94)) (@p1 The atomic number of (@pu) is (@pu:number ninety-four).) ⇒ The atomic number of plutonium is ninety-four. (@p2 (@pu) is an actinide metal with an atomic number of (@pu:number) ⇒ Plutonium is an actinide metal with an atomic number of 94.
The process of retrieving the chain of previous values or metadata from an atom when they differ from the values presently in the hash table. Achieved by examining the MSL text backwards to the last 2-form expression which set the value of that key. Rewound values can be reintroduced into the hash table by rewriting.
(@salary 200000) (@salary 170000) (@salary) ⇒ 170000 (@salary 200000) (@salary) ⇒ 200000
The process of composing a new MSL expression from an existing expression or stream while preserving the underlying values. Used in lifting, canonization, merging, rewinding, and viewer operations such as copy-paste or bulk transformations.
(@walt Walt Disney :born 1901 :died 1966) (@p1 (@walt Walt Disney :born 1901 :died 1966)'s dream of an Experimental Prototype Community of Tomorrow was never fully realized.)
A syntactic element inside an expression which selects the atom's metadata, applies a regex, or denotes a value's data type. The literal values supplied to selectors are stored in subatomic namespaces.
(@DAISY Daisy Duck) (@DAISY :boyfriend (@DONALD)) ⇒ Donald Duck (@DAISY /Daisy/ The Future Mrs. Donald) ⇒ The Future Mrs. Donald Duck (@DAISY :image [file:///c:/disney/archive/daisy-duck.png] (d image png))
The MSL text generated by the viewer in response to a user's selection within a stream, such as a paragraph (atom), document (view), or body of work (world). Used in copy-paste, in moving streams between engines, and in creating archives.
(s) namespace which represents a series of views over time. In Nebula, a collection of MSL texts from a specific machine. More generally, any sequence of MSL expressions.
(s screenplay-ideas (v grimm-amusements (@logline …)) (v grimm-amusements (c characters (@lawrence Laurence Grimm)) (@logline …) (@p1 It was a dark and stormy night.)))
The group of namespaces which sit below the atom. Includes metadata selectors, regex selectors, datatype selectors, bracketed transforms, and format transforms. Within these namespaces, each metadata selector, datatype selector, and format transform has its own key. Subatomic namespaces can store multiple values for the same key, a feature used in attribution and currying.
(@WALT Walt Disney :birthplace Chicago, IL) (@WALT /Walt/ Walter) (@steamboatWillie Steamboat Willie (d video mp4)) (@WALT :book-ref Vinyl Leaves [file:///c://mydocuments/pdf/vinyl-leaves.pdf]) (@WALT :book-ref (f timeline))
The syntactic element of an expression which triggers special functions in the viewer. Used to load filespecs and URLs and to enable viewer formatting of the atom's data.
(c photo-library :folder [file:///c:/my-photos] (d image raw)) (@merchant-of-venice [http://www.gutenberg.org/cache/epub/1114/pg1114-images.html]) (@dymaxion-map (f svg))
The literal value of a bracketed transform. Stored in the atom's bracketed transform namespace and used to return an atom or metadata value from a web address.
(@dymaxion-map Dymaxion Map :creator R. Buckminster Fuller :svg [https://upload.wikimedia.org/wikipedia/commons/e/e3/Fuller_projection.svg])
In a 1-form expression, the actual contents of the hash table located at the key-sequence determined by evaluating the expression. In a 2-form expression, the newly supplied data to be stored at a key-sequence indicated by the expression. Every expression can be resolved to a single value according to the evaluation rules, resulting in default data for the viewer to display.
(@DAISY Daisy Duck :friend (@CLARABELLE Clarabelle Cow)) (@DAISY:friend) ⇒ Clarabelle Cow
(v) namespace used to group atoms together for display.
(v constitution The Constitution of the United States of America (@premable We the People of the United States, in Order to form a more perfect Union…) (@article-1 All legislative Powers herein granted…))
An application for working with MSL expressions through a customized interface, such as a word processor, editor, or wiki.
The (@WALT) atom used throughout the Specifications and in Mimix testing to demonstrate MSL evaluation rules. Named in honor of Walt Disney for his numerous achievements in technology, communication, education, sociology, and environmental planning.
(@WALT Walter Elias Disney)
The world or workspace (w) namespace used to group streams together to organize areas of work or study. In Nebula, the user interface provided to manage streams from a particular engine, such as a Local World.
(w music-theory (c circle-of-fifths [https://en.wikipedia.org/wiki/Circle_of_fifths#/media/File:Circle_of_fifths_deluxe_4.svg] (d image svg)) (c modes (@aeolian-mode [https://en.wikipedia.org/wiki/Aeolian_mode] (d html))) (v notes (@minor-over-major A common technique in popular music of using the (@aeolian-mode relative minor) in a song's bridge or other elements.)))