[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug
From: |
Eric Schulte |
Subject: |
Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug |
Date: |
Sat, 06 Nov 2010 11:58:45 -0600 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Hi Rick,
I've noticed this as well. I'm not the original author of ob-clojure.el
(Joel Boehland is), so I'm not sure how the clojure interaction
currently works, although I know it makes heavy usage of slime. There
must be an existing mechanism used by slime to unroll these lazy
evaluations, for example in the repl (range 10) *is* expanded
user> (range 10)
(0 1 2 3 4 5 6 7 8 9)
I'm using clojure extensively in my studies so I have all the more
reason to try to figure this out. I'll put this on my stack.
BTW: I've noticed that I am unable to get Clojure code blocks to play
nicely with existing slime sessions, say for example I have some large
piece of data in scope in a slime sessions and I'd like to access that
data from a clojure code block and dump some analysis to an Org-mode
document. I have not yet found out how to make this work. If you have,
I'd love to hear how, otherwise I'll look into this as well.
Best -- Eric
Having just looked at this quickly, the following function over-defines
`org-babel-execute:clojure' s.t. the body of the code block is sent to
the superior list in the same manner as when calling `slime-eval-defun'
from within a .clj file. While this doesn't handle starting up clojure
instances or differentiate between session and external evaluation it
should fix the issues mentioned above and could be the beginning of a
permanent solution.
#+begin_src emacs-lisp
(defun org-babel-execute:clojure (body params)
(with-temp-buffer
(insert body)
(read
(slime-eval
`(swank:interactive-eval-region
,(buffer-substring-no-properties (point-min) (point-max)))))))
#+end_src
which then results in
#+begin_src clojure
(map (fn [el] (list el (* el el))) (range 10))
#+end_src
evaluating to
#+results:
| 0 | 0 |
| 1 | 1 |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| 5 | 25 |
| 6 | 36 |
| 7 | 49 |
| 8 | 64 |
| 9 | 81 |
Rick Moynihan <address@hidden> writes:
> I have the following org file:
>
> #+BEGIN_SRC clojure
> (range 10)
> #+END_SRC
>
> #+results:
> : address@hidden
>
> Where as I would expect to see the sequence. Evaluating the code
> inside a doall doesn't seem to do anything either:
>
> #+BEGIN_SRC clojure
> (doall (range 10))
> #+END_SRC
>
> #+results:
> : address@hidden
>
> Is there any parameter I can pass to the block to get the code to
> execute in a doall and return the sequence values rather than the
> lazy-seq object itself?
>
> R.
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
- [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug, Rick Moynihan, 2010/11/04
- Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug,
Eric Schulte <=
- Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug, Rick Moynihan, 2010/11/23
- Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug, Eric Schulte, 2010/11/25
- Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug, Rick Moynihan, 2010/11/25
- Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug, Eric Schulte, 2010/11/26
- Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug, Rick Moynihan, 2010/11/26
- Re: [Orgmode] Org-Babel - Clojure & Lazy Sequences Bug, Eric Schulte, 2010/11/26
- [Orgmode] Re: Org-Babel - Clojure & Lazy Sequences Bug, Achim Gratz, 2010/11/27
- Re: [Orgmode] Re: Org-Babel - Clojure & Lazy Sequences Bug, Eric Schulte, 2010/11/27
- Re: [Orgmode] Re: Org-Babel - Clojure & Lazy Sequences Bug, Rick Moynihan, 2010/11/28
- Re: [Orgmode] Re: Org-Babel - Clojure & Lazy Sequences Bug, Eric Schulte, 2010/11/28