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:03:56 -0700

> On Sep 2, 2017, at 6:00 AM, Matt Wette <address@hidden> wrote:
> 
> 
>> 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.
> 

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.





reply via email to

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