about summary refs log tree commit diff stats
path: root/index.html
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-09-17 15:01:51 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-09-17 15:01:51 -0700
commitf344b250f6f062a1a1902bf69b23ebf9b565de0e (patch)
tree199bd32a9aee198d5028b1c21b83d2cf0944b2b6 /index.html
parent897ae8c1855f830d8819759ea327d147f28a09bf (diff)
downloadmu-f344b250f6f062a1a1902bf69b23ebf9b565de0e.tar.gz
3395
Diffstat (limited to 'index.html')
-rw-r--r--index.html18
1 files changed, 15 insertions, 3 deletions
diff --git a/index.html b/index.html
index 27e76540..38a7ca62 100644
--- a/index.html
+++ b/index.html
@@ -92,7 +92,17 @@ allowing whitespace in reagents.
 <br/><a href='html/017parse_tree.cc.html'>017parse_tree.cc</a>: a new syntax
 for representing complex types as trees using whitespace and parentheses
 (s-expressions).
-
+<br/><a href='html/018type_abbreviations.cc.html'>018type_abbreviations.cc</a>:
+the core types of Mu are designed to be fully explicit and familiar to
+non-programmers at the cost of some verbosity: <tt>number</tt>,
+<tt>character</tt>, <tt>boolean</tt>, etc. Once learners get acclimatized,
+we can teach them abbreviated forms that are familiar to veteran programmers:
+<tt>num</tt>, <tt>char</tt>, <tt>bool</tt>. Mu's facility for type
+abbreviations is extensible: learners can abbreviate <tt>number</tt> to
+<tt>n</tt> if they so choose, thereby exploring such trade-offs. You can also
+create abbreviations suitable for a specific program, like abbreviating
+<tt>address:array:address:array:character</tt> to <tt>board</tt> for say a
+tic-tac-toe or chess program. Think C's <tt>typedef</tt> statement.
 <br/><a href='html/020run.cc.html'>020run.cc</a>: executing Mu recipes by
 executing the list of instructions they contain. Future layers will define
 more primitive operations that can be used in instructions.
@@ -113,7 +123,8 @@ than high-level languages can.
 <p/>Support for various data structures: heterogeneous compound types called
 <a href='html/030container.cc.html'><em>containers</em></a>, akin to records
 or structs, homogeneous <a href='html/032array.cc.html'>arrays</a> of a single
-type of value, and <a href='html/033exclusive_container.cc.html'><em>exclusive containers</em></a>,
+type of value (type <tt>array</tt> conventionally abbreviated as <tt>@</tt>),
+and <a href='html/033exclusive_container.cc.html'><em>exclusive containers</em></a>,
 akin to C unions but with a tag so each value knows its &lsquo;kind&rsquo;.
 Out of these primitive types, Mu builds the usual and growing menagerie of
 data structures: <a href='html/064list.mu.html'>linked lists</a> permitting
@@ -138,7 +149,8 @@ pointing to it. This eliminates a whole class of undefined behavior and
 security vulnerabilities that plague C. Compared to Rust, Mu pays some
 additional runtime cost in exchange for C-like flexibility (you can copy
 addresses around all you like, and write from any copy of an address) and
-simpler implementation (no static analysis).
+simpler implementation (no static analysis). Mu by convention abbreviates type
+<tt>address</tt> to <tt>&amp;</tt>.
 
 <p/>Support for higher-order recipes that can pass <a href='html/071recipe.cc.html'>recipes</a>
 around like any other value.