This version of CosmicOS gets as far as a simple type system and the beginning of an object model, but doesn't apply either to much. Still, there's a lot more plumbing in place now. The generated message currently consists of a sequence of 5 symbols. number symbol meaning 0 . binary digit zero 1 : binary digit one 2 ( marks beginning of an expression 3 ) marks end of an expression 4 ; marks end of sentence There are constraints in the possible transitions between these symbols that would allow a simple and shorter encoding if desired. Numbers are encoded as binary digits between parentheses, e.g. (:::.) is 14. A set of numbers between parentheses constitutes an expression. Expressions can be nested. Expressions followed by a semicolon should evaluate to be true, once the rules for evaluation have been introduced. In the human-readable form of the message, decimal numbers can be used. There are converted to the above form. Identifiers can also be used. Identifiers are mapped onto arbitrarily assigned numbers. In the message, there is nothing to distinguish identifiers from numbers. The actual language is carefully constructed so that this distinction is never necessary. There are a few structures that are introduced currently by example only. This should change. Ideally there would be definitions and plentiful examples for everything. There are also likely to be bugs in the message, since there is no automated checking mechanism in place yet.reasonably readable form of message
Estimate of message entropy: 5.5 kB.
0 (MATH) introduce numbers (in unary notation)
1 (MATH) now show equality
2 (MATH) now show other relational operators
3 (MATH) introduce the NOT logical operator
4 (MATH) introduce the AND logical operator
5 (MATH) introduce the OR logical operator
6 (MATH) use equality for truth values
7 (MATH) introduce addition
8 (MATH) introduce subtraction
9 (MATH) introduce multiplication
10 (MATH) introduce a simple form of binary notation
11 (MATH) demonstrate idea of leaving gaps in an expression
12 (MATH) show some simple function calls
13 (MATH) show mechanisms for branching
14 (MATH) show an example of recursive evaluation
15 (MATH) introduce universal quantifier
16 (MATH) introduce existential quantifier
17 (MATH) introduce logical implication
18 (MATH) introduce sets and set membership
19 (MATH) illustrate lists and some list operators
20 (MATH) build up functions of several variables
21 (MATH) show map function for applying a function across the elements of a list
22 (MATH) introduce mutable objects, and side-effects
23 (MATH) introduce sugar for let
24 (MATH) introduce environment/hashmap structure
25 (MATH) show a pattern matching mechanism
26 (MATH) introduce a basic type system
27 (MATH) introduce graph structures
28 (OBJECT) introduce simple mutable structures
29 (OBJECT) introduce method handler wrappers