Rather than maintain static lists of core namespaces and their source files in core/data/, consider structuring that directory as per usual Joker namespace rules and having gen_data (and/or gen_code) dynamically discover and process them.
core/data/joker/core.joke would still be loaded first and treated specially, but the rest would be loaded as needed based on the usual (ns ...) specifications.
While this would make official Joker more maintainable for the occasional addition of a core namespace, it could make Joker much more attractive to end users who wish to "compile", or embed, their own (or 3rd-party) libraries in the executable -- they could just drop the source code into the appropriate directory and rebuild.
Rather than maintain static lists of core namespaces and their source files in
core/data/
, consider structuring that directory as per usual Joker namespace rules and havinggen_data
(and/orgen_code
) dynamically discover and process them.core/data/joker/core.joke
would still be loaded first and treated specially, but the rest would be loaded as needed based on the usual(ns ...)
specifications.While this would make official Joker more maintainable for the occasional addition of a core namespace, it could make Joker much more attractive to end users who wish to "compile", or embed, their own (or 3rd-party) libraries in the executable -- they could just drop the source code into the appropriate directory and rebuild.