[Orgmode] org-babel and OCaml - help?

2010-07-16 Thread Erik L. Arneson
Hi everybody,

I have just started playing around with org-babel, and it's really
awesome!  I've had great luck with emacs-lisp source blocks, and when I
saw that OCaml source blocks were also supported, I started testing
those out.  Right away I ran into trouble, though.  Observe the example
below:

--8---cut here---start-8---
#+tblname: example-table
| 1 | 2 |
| 2 | 3 |
| 3 | 5 |
| 4 | 6 |

#+source: ocaml-length
#+begin_src ocaml :var table=example-table
  List.length table
#+end_src

#+results: ocaml-length
: Characters 14-15:
:   let table = ((1 2) (2 3) (3 5) (4 6));
: ^
: Error: This expression is not a function; it cannot be applied

#+results: ocaml-length
--8---cut here---end---8---

It looks as though the 'table' variable is being passed as Lisp code
instead of OCaml.  Is there something that my setup is missing, or does
the OCaml code perhaps need more help?  Maybe I did something wrong?

(I'd love to work on fixing up the OCaml interface, if that's needed.)

-- 
Erik Arneson dyb...@lnouv.com
  GPG Key ID: 1024D/62DA1D25
  Office: +1.541.291.9776
  Skype: callto://pymander


___
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


Re: [Orgmode] org-babel and OCaml - help?

2010-07-16 Thread Eric Schulte
Hi Erik,

dyb...@lnouv.com (Erik L. Arneson) writes:

 Hi everybody,

 I have just started playing around with org-babel, and it's really
 awesome!  I've had great luck with emacs-lisp source blocks, and when I
 saw that OCaml source blocks were also supported, I started testing
 those out.  Right away I ran into trouble, though.  Observe the example
 below:

 #+tblname: example-table
 | 1 | 2 |
 | 2 | 3 |
 | 3 | 5 |
 | 4 | 6 |

 #+source: ocaml-length
 #+begin_src ocaml :var table=example-table
   List.length table
 #+end_src

 #+results: ocaml-length
 : Characters 14-15:
 :   let table = ((1 2) (2 3) (3 5) (4 6));
 : ^
 : Error: This expression is not a function; it cannot be applied

 #+results: ocaml-length

 It looks as though the 'table' variable is being passed as Lisp code
 instead of OCaml.  Is there something that my setup is missing, or does
 the OCaml code perhaps need more help?  Maybe I did something wrong?


Nope you diagnosed the problem exactly, this isn't an issue with your
setup, but rather with the current babel-ocaml integration.  The
language specific interaction functionality tends to evolve by need, and
I don't think many people have been banging on ocaml through Babel up to
this point.

I've just pushed up a commit with teaches Babel how to feed tables to
ocaml, so your example above re-written as below should now work.

--8---cut here---start-8---
#+tblname: example-table
| 1 |
| 2 |
| 3 |
| 4 |

#+source: ocaml-length
#+begin_src ocaml :var table=example-table
  Array.length table;;
#+end_src

#+results: ocaml-length
: 4
--8---cut here---end---8---


 (I'd love to work on fixing up the OCaml interface, if that's needed.)

I'd love to have your help!  The relevant code is located in
org/lisp/ob-ocaml.el, you can see in the most recent commit the changes
that I've just made for integrating table handling into this file.

You'll notice by comparing ob-ocaml to some of the more mature code
files like ob-R, ob-python, ob-ruby that there are many areas in which
ob-ocaml could grow in functionality.

Cheers -- Eric

___
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode