On 2024-04-04 6:53 am, Tom Brennan wrote:
Sort of answering my own question, but I figure that you don't get much out of creating scheme modules directly, unless they can live entirely outside of the lilypond world. Generally it seems better to create shared libraries somewhere and include them with `--include/-I`.
If you were doing lots of Scheme programming and wanted to avoid polluting the end user's namespace, then modules could make sense. Mind you, if you are the only consumer of your shared library, you probably can mitigate naming collisions on your own.
Another case is the backend pattern LilyPond uses, where each backend lives in its own module but ultimately exposes the same public interface. This allows abstract driver logic to be wired up dynamically with the concrete behavior with minimal coupling and the ability for the front-end and back-end to vary independently.
-- Aaron Hill