> On Sep 2, 2017, at 6:00 AM, Matt Wette <matt.we...@gmail.com> wrote: > > >> 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. >
Oops -- never mind. You are talking about the compile procedure; my mind was off in a differnent context: guild. But there is an issue here, because I would like "guile -s foo.py" to interpret the file foo.py as Python and not Scheme.