> On Sep 1, 2017, at 1:45 PM, Stefan Israelsson Tampe <stefan.ita...@gmail.com> > wrote: > > Hi, > > I am maintaining a prolog->scheme compiler and a python->scheme compiler. The > nice thing with those implementation is that they work well with the guile > module system and are proper scheme functions and variables etc. So python > objects can be treated as goops objects and prolog predicates can be used in > kanren etc. > > There is a headake though. When loading a module from one language to another > language the autocompilation fails. It would be nice to load a python module > and work with it from scheme land and vice versa. > > One problem is the following funciton in system base compile > > (define* (compile-file file #:key > (output-file #f) > (from (current-language)) > (to 'bytecode) > (env (default-environment from)) > (opts '()) > (canonicalization 'relative)) > ...) > > form is either specified or current-language and what I propose is to add a > knob that enables another version of the default for from e.g. something like > the following. > > (define %extension-map '((("py" "python") python) ((("pl" "prolog") prolog) > (("scm") scheme))) > (define %use-extension-map #f) > (define (default-from-file file) > (define default (current-language)) > (if %use-extension-map > (let* ((ext (get-extension file)) > (lang (find-language ext %extension-map))) > (if lang lang default)))) > > (define* (compile-file file #:key > (output-file #f) > (from (default-from file)) > (to 'bytecode) > (env (default-environment from)) > (opts '()) > (canonicalization 'relative)) > > ...) > > I think that we already have variables that discovers the source files that > guile can compile and I don't think that we should get name clashes as long > as we use the prefix (languge prolog module) as a prefix for modules in other > languages than scheme. > > WDYT
Will this handle all possible option processing? Another option is to change compile.scm to hand-off unknown extensions to another script using some convension. For example, for py files, compile.scm would call out compile-py.scm, and for prolog, compile-pl.scm.