OCaml Code Blocks in Babel
Babel support for OCaml
Introduction
OCaml is a statically-typed, functional programming language, similar to F#, Haskell, Scala, Rust, and Standard ML.
Requirements and Setup
Babel support for OCaml requires a working installation of the OCaml
platform, which combines the OCaml compiler with a coherent set of
tools, documentation, libraries, and testing resources.
Babel currently evaluates OCaml code with the OCaml interpreter
and not the compiler.
It requires tuareg-mode, which uses a constant string to name the
default interpreter session *OCaml*.
To configure OCaml code blocks in Org mode, add the appropriate
dotted pair to org-babel-load-languages:
(org-babel-do-load-languages 'org-babel-load-languages '((ocaml . t))) ; this line activates OCaml
Babel Features for OCaml Code Blocks
Babel supports OCaml sessions, which run in a buffer named *OCaml* by default.
The header argument :session can only be one of "none", "default", or
"*OCaml*", other values raise an error.
There are no OCaml-specific header arguments.
Examples of Use
Here is the obligatory "Hello World!" example.
#+begin_src ocaml "Hello World!" #+end_src #+RESULTS: : Hello World!
To return only the value, use the default header argument :results value.
Note the double colon separating lines of code.
#+begin_src ocaml :var y=10 let square x = x * x;; square y #+end_src #+RESULTS: : 100
To return the value and its type, which is conventional in OCaml, set the header argument :results
verbatim. Note that the square function persists in the interpreter session.
#+begin_src ocaml :var y=10 :results verbatim square y #+end_src #+RESULTS: : - : int = 100