Hi everyone! I am pleased to announce a brand new package for the OCaml ecosystem: Guile-ocaml
Guile-ocaml is a Free Software library that provides high-level OCaml bindings to the FFI interface for GNU Guile Scheme. The aim of these bindings are to provide an easy way for OCaml developers to extend their OCaml applications with GNU Guile scheme scripting capabilities, providing simple combinators to translate terms and send queries between the two languages.
You can find the documentation here - alongside a fairly comprehensive documentation of all the bindings, it provides a step by step guide on implementing the classical GNU Guile based turtle drawing program, except using OCaml’s graphics module.
Here’s a sneak preview from that guide of what passing an OCaml function to GNU Guile looks like using these bindings:
let move_by n =
if not @@ Guile.Number.is_integer n then
failwith "expected numeric arg";
let n = Guile.Number.int_from_raw n in
let x, y =
let cur_pos = Graphics.current_point () in
move n cur_pos !direction in
if !pen_down then
Graphics.lineto x y;
Graphics.moveto x y;
Guile.eol
let () = ignore @@ Guile.Functions.register_fun1 "move-by" move_by
Also, I’d like to give extra thanks to opam-repository’s tireless maintainers! The package was in limbo for a while because I couldn’t work out why conf-guile was failing to build on certain distributions, but thankfully @mseri and @kit-ty-kate were able to fix the issue!