summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/embedding.rst4
-rw-r--r--docs/intro.rst91
-rw-r--r--index.rst1
3 files changed, 96 insertions, 0 deletions
diff --git a/docs/embedding.rst b/docs/embedding.rst
index 0bb9dcc..f07b0f6 100644
--- a/docs/embedding.rst
+++ b/docs/embedding.rst
@@ -159,3 +159,7 @@ Actinide functions returne a tuple of results rather than a single value:
This two-way binding mechanism makes it straightforward to define interfaces
between Actinide and the target domain.
+
+.. todo::
+
+ Document the full public API.
diff --git a/docs/intro.rst b/docs/intro.rst
new file mode 100644
index 0000000..190a1cf
--- /dev/null
+++ b/docs/intro.rst
@@ -0,0 +1,91 @@
+########################
+Introduction to Actinide
+########################
+
+Notes from Slack:
+
+max:
+ may i give some unsolicited advice?
+
+owen:
+ No, because now I want it so it’s solicited advice instead. What’s up?
+
+max:
+ from what you have right now, it reads clearly like it was written by the
+ person who wrote the parser for the language
+
+ i would suggest a lighter introduction focusing on: what is this language
+ similar to (lisp?), what are its key differences from that other language,
+ and a few examples of something in language A versus your language
+
+ more or less, think about what you are looking for when visiting a new
+ project (language, library, framework, etc.): what's its purpose, what are
+ some simple ways i can do the thing, how is this different from other
+ similar projects
+
+ i know it's not especially "technical writing", but IMO that kind of thing
+ helps users have a mental framework for reading the rest of the docs
+
+*****************
+What is Actinide?
+*****************
+
+* A programming language
+ * A lisp
+ * Heavily inspired by Scheme
+* Differences from other languages:
+ * Uniform, minimal syntax
+ * No operators, only functions
+ * The language itself is extensible
+ * Functional language
+* What's it for?
+ * Customizing other programs
+
+**********
+Calculator
+**********
+
+Concepts introduced:
+
+* Starting the REPL
+* What is a REPL?
+* Literal forms for numbers
+* Built-in arithmetic forms (``+``, ``-``, ``*``, ``/``)
+* Simple evaluation ("take the thing on the left, and do it to the rest of the list")
+
+************************
+Extending the calculator
+************************
+
+Concepts introduced:
+
+* Names, symbols, and environments
+* Definition forms (define)
+* Flow control forms (if, lambda)
+* Recursion
+
+Fibbonaci example.
+
+************
+Fixing a bug
+************
+
+Concepts introduced:
+
+* *Tail* recursion and why it's special
+
+Redo fibboanci as a tail-recursive function.
+
+*********************
+Thinking functionally
+*********************
+
+Concepts introduced:
+
+* Higher-order functions and why they're important
+* Reduce
+
+Redo fibbonaci as a fold.
+
+****
+Draw the rest of the owl
diff --git a/index.rst b/index.rst
index 69b40b4..8d722e5 100644
--- a/index.rst
+++ b/index.rst
@@ -2,6 +2,7 @@
.. toctree::
:maxdepth: 2
+ docs/intro
docs/language
docs/embedding
docs/security