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

generator of message

final form of message

tarball of all files

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