Urs Liska <u...@openlilylib.org> writes: > \import harmonic-analysis > would load everything at once (I'd even suggest this command working > with symbolic names and not filenames). > > \importFrom harmonic-analysis #'(pitch-class riemann) > would only load the two submodules. > (The submodule would have to \import the main module if it depends on > code in it). > > What do you think?
The latter is a complication we can do without in my book. What we need is to drag the concept of modules into LilyPond, and those mostly determine name spaces rather than loaded files. I don't think we need submodules: the GUILE module system allows autoloading files conditionally when a symbol gets referenced: -- syntax: define-module module-name option … MODULE-NAME is a list of one or more symbols. (define-module (ice-9 popen)) ‘define-module’ makes this module available to Guile programs under the given MODULE-NAME. OPTION … are keyword/value pairs which specify more about the defined module. The recognized options and their meaning are shown in the following table. ‘#:use-module INTERFACE-SPECIFICATION’ Equivalent to a ‘(use-modules INTERFACE-SPECIFICATION)’ (*note Using Guile Modules::). ‘#:autoload MODULE SYMBOL-LIST’ Load MODULE when any of SYMBOL-LIST are accessed. For example, (define-module (my mod) #:autoload (srfi srfi-1) (partition delete-duplicates)) ... (if something (set! foo (delete-duplicates ...))) When a module is autoloaded, all its bindings become available. SYMBOL-LIST is just those that will first trigger the load. An autoload is a good way to put off loading a big module until it’s really needed, for instance for faster startup or if it will only be needed in certain circumstances. ‘@’ can do a similar thing (*note Using Guile Modules::), but in that case an ‘@’ form must be written every time a binding from the module is used. [...] So loading the module should just imply providing all the interfaces and functions. Loading the actual code can be done on-demand in case some library covers more obscore use cases in separate files. -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel