|
|
@@ -246,9 +246,42 @@ it in our output.
|
|
|
:END:
|
|
|
In addition to evaluation of code blocks, org-babel allows them to
|
|
|
be parameterised (i.e. have arguments). Thus source code blocks
|
|
|
- now have the status of *functions*.
|
|
|
+ now have the status of *functions*. Arguments to code blocks can
|
|
|
+ be used in both functional and scripting mode.
|
|
|
|
|
|
-Inputs for fibonacci-seq
|
|
|
+**** Simple example of using a source block as a function
|
|
|
+
|
|
|
+ First let's look at a very simple example. The following source
|
|
|
+ block defines an org-babel function that will square its input.
|
|
|
+
|
|
|
+#+srcname: square(x)
|
|
|
+#+begin_src python
|
|
|
+x*x
|
|
|
+#+end_src
|
|
|
+
|
|
|
+In the org-mode file that looks like this:
|
|
|
+: #+srcname: square(x)
|
|
|
+: #+begin_src python
|
|
|
+: x*x
|
|
|
+: #+end_src
|
|
|
+
|
|
|
+
|
|
|
+Now we use the source block:
|
|
|
+
|
|
|
+: #+lob: square(x=6)
|
|
|
+
|
|
|
+#+lob: square(x=6)
|
|
|
+
|
|
|
+#+resname: square(x=6)
|
|
|
+: 36
|
|
|
+
|
|
|
+**** A more complex example: using an org-table as input
|
|
|
+
|
|
|
+ In this example we're going to define a function to compute a
|
|
|
+ Fibonacci sequence, and we're going to make it take its input
|
|
|
+ from a table in the org-mode buffer.
|
|
|
+
|
|
|
+ Here are the inputs for fibonacci-seq:
|
|
|
|
|
|
#+tblname: fibonacci-inputs
|
|
|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|
|
|
@@ -260,8 +293,8 @@ in the Org-mode buffer this looks like
|
|
|
: | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
|
|
|
|
|
|
[[http://www.gnu.org/software/emacs/manual/elisp.html][Emacs Lisp]] source code
|
|
|
-#+srcname: fibonacci-seq
|
|
|
-#+begin_src emacs-lisp :var fib-inputs=fibonacci-inputs
|
|
|
+#+srcname: fibonacci-seq(fib-inputs=fibonacci-inputs)
|
|
|
+#+begin_src emacs-lisp
|
|
|
(defun fibonacci (n)
|
|
|
(if (or (= n 0) (= n 1))
|
|
|
n
|
|
|
@@ -272,8 +305,8 @@ in the Org-mode buffer this looks like
|
|
|
#+end_src
|
|
|
|
|
|
in the Org-mode buffer this looks like
|
|
|
-: #+srcname: fibonacci-seq
|
|
|
-: #+begin_src emacs-lisp :var fib-inputs=fibonacci-inputs
|
|
|
+: #+srcname: fibonacci-seq(fib-inputs=fibonacci-inputs)
|
|
|
+: #+begin_src emacs-lisp
|
|
|
: (defun fibonacci (n)
|
|
|
: (if (or (= n 0) (= n 1))
|
|
|
: n
|