author | Tony Garnock-Jones <tonyg@lshift.net> |
Fri, 28 Oct 2005 06:05:17 +1300 | |
changeset 38 | a9298e1465b6 |
child 40 | e38cbf5bb340 |
permissions | -rw-r--r-- |
38
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
1 |
-*- outline -*- |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
2 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
3 |
* Basics |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
4 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
5 |
pattern: value pattern: value ... (fun (pattern value) ...) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
6 |
value, value, value, ... (tuple value ...) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
7 |
value value (adj value value) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
8 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
9 |
( value ) ; grouping |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
10 |
[ value ] (quunquote value) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
11 |
#[ value ] (quasiquote value) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
12 |
#( value ) (unquote value) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
13 |
# value (quote value) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
14 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
15 |
atom ; symbols |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
16 |
'another atom' ; symbols |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
17 |
literal ; literal object sugar (strings, ints) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
18 |
; unit, nothing at all |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
19 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
20 |
"a comment" ; comments |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
21 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
22 |
* Tuples, Records and Functions |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
23 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
24 |
[] is both the empty quoted tuple and the empty quoted function. |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
25 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
26 |
Tuples are sugar for functions with integer patterns! Like this: |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
27 |
(x, y, z) <==> (#tuple: #tuple 0: x 1: y 2: z) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
28 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
29 |
(... or something, the "#tuple: #tuple" is supposed to be an |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
30 |
"interface marker" of some kind) |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
31 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
32 |
The empty tuple/function is "unit". |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
33 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
34 |
* Interpretation |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
35 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
36 |
Non-quoted tuples are sugar for monadic sequencing, that is /bind/ |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
37 |
operations. |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
38 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
39 |
Non-quoted functions are messages sent to the ambient. |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
40 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
41 |
Non-quoted adjacency is function application == message send. |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
42 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
43 |
* Quoting |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
44 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
45 |
** Quote |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
46 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
47 |
** Quasiquote and unquote |
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
48 |
|
a9298e1465b6
Notes on planned syntax + meaning
Tony Garnock-Jones <tonyg@lshift.net>
parents:
diff
changeset
|
49 |
** Quunquote |