which (trivially) uses module (ttn-do mogrify) for input: If you grep ttn-do, you'll see other examples, most of which do more inside ‘editing-buffer’ than outside. In various versions of Guile, there is module ‘(ice-9 gap-buffer)’, which is "related technology". [...] problem with modules. How to check what can be imported? You can ‘(set! %load-verbosely #t)’ to check. On a deeper level, Guile resolves a module name to a filename using var ‘%load-path’, which is initialized from env var ‘GUILE_LOAD_PATH’ and command-line arg ‘-L DIR’ (one or more). By default, cwd is excluded from these, for security. Try to specify it explicitly, e.g.: "guile -L . -s import-test.scm". At least, this is my understanding of Guile 1.x -- maybe 2.0 differs. [clickety click] Hmm, i see you've successfully tempted me into passing a half hour playing w/ this stuff. Well done! Might as well share the fruit.