In addition to Scheme code you can also put things that are defined in C into a module.
You do this by writing a small Scheme file that defines the module and
load-extension directly in the body of the module.
$ cat /usr/local/share/guile/math/bessel.scm (define-module (math bessel)) (export j0) (load-extension "libguile-bessel" "init_bessel") $ file /usr/local/lib/libguile-bessel.so ... ELF 32-bit LSB shared object ... $ guile guile> (use-modules (math bessel)) guile> (j0 2) 0.223890779141236
There is also a way to manipulate the module system from C but only Scheme files can be autoloaded. Thus, we recommend that you define your modules in Scheme.