Lawrence Bottorff <borg...@gmail.com> writes: > Once before I was wondering why :vars doesn't seem to work properly with > clojure. This works: > > #+begin_src clojure :var a='(1 2 3 4 5) > (count a) > #+end_src > > #+RESULTS: > : 5 > > as well as this > > #+begin_src emacs-lisp :var a=(number-sequence 1 5) > a > #+end_src > > #+RESULTS: num-seq-test1 > | 1 | 2 | 3 | 4 | 5 | > > but this is a no go. . . . > > #+begin_src clojure c=(range 10) > (count c) > #+end_src >
Is `range' a clojure function? If so, that's expected: (info "(org) var") says: ,---- | The values passed to arguments can either be literal values, | references, or Emacs Lisp code (see *note Emacs Lisp evaluation of | variables: var.). `---- [The syntax is wrong too: it should read #+begin_src clojure :var c=(range 10) (count c) #+end_src but it's not going to work unless you define an emacs-lisp function called range and teach it to emacs.] The following works (I don't have clojure installed here, so I replaced it with scheme): --8<---------------cut here---------------start------------->8--- #+BEGIN_SRC emacs-lisp (defun range (N) (if (<= N 1) (list N) (nconc (range (- N 1)) (list N)))) #+END_SRC #+begin_src scheme :var c=(range 10) (define (count l) (if (null? l) 0 (1+ (count (cdr l))))) (count c) #+end_src #+RESULTS: : 10 --8<---------------cut here---------------end--------------->8--- -- Nick