diff --git a/doc/lisp-std.rst b/doc/lisp-std.rst
index b0a33f8..261f388 100644
--- a/doc/lisp-std.rst
+++ b/doc/lisp-std.rst
@@ -11,44 +11,65 @@
 Built-in "functions"
 --------------------
 
+.. function:: (defun function-name (arg1 ... argN) & body)
+
+    Define a function ``function-name`` that takes N arguments with names
+    ``arg1`` ... ``argN``. ``body`` is evaluated in order, with the whole
+    function evaluating to the last expression.
+
+    .. code-block:: lisp
+        
+        (defun greet (name)
+          (string-concat "Hello, " name))
+        ; string-concat isn't even implemented yet, but you get the picture.
+
 .. function:: (if condition true-condition [false-condition])
 
-	Evaluates ``condition``, if it is truthy (non-``nil``) ``true-condition`` is
-	evaluated. Otherwise ``false-condition`` is evaluated. If
-	``false-condition`` is not provided, ``if`` will evaluate to ``nil``.
+    Evaluates ``condition``, if it is truthy (non-``nil``) ``true-condition`` is
+    evaluated. Otherwise ``false-condition`` is evaluated. If
+    ``false-condition`` is not provided and ``condition`` is ``nil``, ``if``
+    will evaluate to ``nil``.
+
+    .. code-block:: lisp
+
+        (print (if (= 2 3)
+                  "2 = 3"
+                  "2 /= 3"))
+        ; 2 /= 3
 
 .. function:: (let1 (variable binding) & body)
 
-	Evaluates ``binding`` and binds it to ``variable``, then evaluates ``body``.
-	After ``body`` is evaluated ``variable`` is unbound.
+    Evaluates ``binding`` and binds it to ``variable``, then evaluates ``body``.
+    After ``body`` is evaluated ``variable`` is unbound.
 
-	.. code-block:: lisp
+    .. code-block:: lisp
 
-		(let1 (greeting (greet "John"))
-		  (do-something greeting)
-		  (print greeting))
-		; greeting is no longer bound
+        (let1 (greeting (greet "John"))
+          (do-something greeting)
+          (print greeting))
+        ; greeting is no longer bound
 
 .. function:: (gc)
 
-	Force the garbage collector (GC) to run.
+    Force the garbage collector (GC) to run.
 
 Functions
 ---------
 
 .. function:: (car pair)
 
-	Return the first item in ``pair``.
+    Return the first item in ``pair``.
 
 .. function:: (cdr pair)
 
-	Return the second (last) item in ``pair``.
+    Return the second (last) item in ``pair``.
 
 .. function:: (cons a b)
 
-	Return a cons-pair containing ``a`` and ``b``.
+    Return a cons-pair containing ``a`` and ``b``.
 
 .. function:: (print val)
 
-	Print out ``val`` to standard output. This will not be formatted as an
-	s-expression, but in a manner more similar to the internal representation.
\ No newline at end of file
+    Print out ``val`` to standard output. This will not be formatted as an
+    s-expression, but in a manner more similar to the internal representation.
+
