The more one hacks in Scheme, the more one realizes that there are actually two computational worlds: one which is warm and alive, that land of parentheses, and one cold and dead, the land of C and its ilk.
But yet we as programmers live in both worlds, and Guile itself is half implemented in C. So it is that Guile’s living half pays respect to its dead counterpart, via a spectrum of interfaces to C ranging from dynamic loading of Scheme primitives to dynamic binding of stock C library procedures.
|• Foreign Libraries:||Dynamically linking to libraries.|
|• Foreign Functions:||Simple calls to C procedures.|
|• C Extensions:||Extending Guile in C with loadable modules.|
|• Modules and Extensions:||Loading C extensions into modules.|
|• Foreign Pointers:||Accessing global variables.|
|• Dynamic FFI:||Calling arbitrary C functions.|