CosmicOS version cosmic.0.3

(latest version always available at CosmicOS homepage)

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.

Index of lessons

(all lessons)

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