summaryrefslogtreecommitdiff
path: root/vere/doc/spec/nock/4.txt
diff options
context:
space:
mode:
Diffstat (limited to 'vere/doc/spec/nock/4.txt')
-rw-r--r--vere/doc/spec/nock/4.txt45
1 files changed, 45 insertions, 0 deletions
diff --git a/vere/doc/spec/nock/4.txt b/vere/doc/spec/nock/4.txt
new file mode 100644
index 0000000..3457d6b
--- /dev/null
+++ b/vere/doc/spec/nock/4.txt
@@ -0,0 +1,45 @@
+A noun is an atom or a cell. An atom is a natural number. A cell is an ordered pair of nouns.
+
+Reduce by the first matching pattern; variables match any noun.
+
+nock(a) *a
+[a b c] [a [b c]]
+
+?[a b] 0
+?a 1
++[a b] +[a b]
++a 1 + a
+=[a a] 0
+=[a b] 1
+
+/[1 a] a
+/[2 a b] a
+/[3 a b] b
+/[(a + a) b] /[2 /[a b]]
+/[(a + a + 1) b] /[3 /[a b]]
+/a /a
+
+#[1 a b] a
+#[(a + a) b c] #[a [b /[(a + a + 1) c]] c]
+#[(a + a + 1) b c] #[a [/[(a + a) c] b] c]
+#a #a
+
+*[a [b c] d] [*[a b c] *[a d]]
+
+*[a 0 b] /[b a]
+*[a 1 b] b
+*[a 2 b c] *[*[a b] *[a c]]
+*[a 3 b] ?*[a b]
+*[a 4 b] +*[a b]
+*[a 5 b c] =[*[a b] *[a c]]
+
+*[a 6 b c d] *[a *[[c d] 0 *[[2 3] 0 *[a 4 4 b]]]]
+*[a 7 b c] *[*[a b] c]
+*[a 8 b c] *[[*[a b] a] c]
+*[a 9 b c] *[*[a c] 2 [0 1] 0 b]
+*[a 10 [b c] d] #[b *[a c] *[a d]]
+
+*[a 11 [b c] d] *[[*[a c] *[a d]] 0 3]
+*[a 11 b c] *[a c]
+
+*a *a