diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-01-09 00:59:13 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-01-09 01:00:36 -0800 |
commit | 6612b390e7c5462eb233a00eb073d09f45e438f6 (patch) | |
tree | 009f9f4c386f307e3f0da09c6448c5b28f09f417 /mu.arc.t.html | |
parent | b5018f8315948aee69a08e8c364321819ff9b2bf (diff) | |
download | mu-6612b390e7c5462eb233a00eb073d09f45e438f6.tar.gz |
514
Diffstat (limited to 'mu.arc.t.html')
-rw-r--r-- | mu.arc.t.html | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/mu.arc.t.html b/mu.arc.t.html index 943742c0..dd641472 100644 --- a/mu.arc.t.html +++ b/mu.arc.t.html @@ -166,25 +166,27 @@ a { color:#4444ff; } <span class="Comment">; of them.</span> <span class="Comment">;</span> <span class="Comment">; Since we're building on lisp, our code samples won't look quite like the</span> -<span class="Comment">; idealized syntax above. For now they will be lists of lists:</span> +<span class="Comment">; idealized syntax above. For now they will look like this:</span> <span class="Comment">;</span> -<span class="Comment">; (function-name</span> -<span class="Comment">; ((oarg1 oarg2 ... <span class="Op"><-</span> op arg1 arg2 ...)</span> -<span class="Comment">; ...</span> -<span class="Comment">; ...))</span> +<span class="Comment">; (function f [</span> +<span class="Comment">; (oarg1 oarg2 ... <span class="Op"><-</span> op arg1 arg2 ...)</span> +<span class="Comment">; ...</span> +<span class="Comment">; ...</span> +<span class="Comment">; ])</span> <span class="Comment">;</span> -<span class="Comment">; Each arg/oarg is itself a list, with the payload value at the head, and</span> -<span class="Comment">; various metadata in the rest. In this first example the only metadata is types:</span> -<span class="Comment">; 'integer' for a memory location containing an integer, and 'literal' for a</span> -<span class="Comment">; value included directly in code. (Assembly languages traditionally call them</span> -<span class="Comment">; 'immediate' operands.) In the future a simple tool will check that the types</span> -<span class="Comment">; line up as expected in each op. A different tool might add types where they</span> -<span class="Comment">; aren't provided. Instead of a monolithic compiler I want to build simple,</span> -<span class="Comment">; lightweight tools that can be combined in various ways, say for using</span> -<span class="Comment">; different typecheckers in different subsystems.</span> +<span class="Comment">; Each arg/oarg can contain metadata separated by slashes and colons. In this</span> +<span class="Comment">; first example below, the only metadata is types: 'integer' for a memory</span> +<span class="Comment">; location containing an integer, and 'literal' for a value included directly</span> +<span class="Comment">; in code. (Assembly languages traditionally call them 'immediate' operands.)</span> +<span class="Comment">; In the future a simple tool will check that the types line up as expected in</span> +<span class="Comment">; each op. A different tool might add types where they aren't provided.</span> +<span class="Comment">; Instead of a monolithic compiler I want to build simple, lightweight tools</span> +<span class="Comment">; that can be combined in various ways, say for using different typecheckers</span> +<span class="Comment">; in different subsystems.</span> <span class="Comment">;</span> <span class="Comment">; In our tests we'll define such mu functions using a call to 'add-code', so</span> -<span class="Comment">; look for it. Everything outside 'add-code' is just test-harness details.</span> +<span class="Comment">; look for it when reading the code examples. Everything outside 'add-code' is</span> +<span class="Comment">; just test-harness details that can be skipped at first.</span> <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> |