guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Auto compile from many different languages that interoperates with g


From: Matt Wette
Subject: Re: Auto compile from many different languages that interoperates with guile
Date: Sat, 2 Sep 2017 06:00:49 -0700

> On Sep 1, 2017, at 1:45 PM, Stefan Israelsson Tampe <address@hidden> 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.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]