guile-user
[Top][All Lists]
Advanced

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

Re: primitive inclusion


From: Steve Tell
Subject: Re: primitive inclusion
Date: Sat, 26 Jul 2003 00:23:16 -0400 (EDT)

On Fri, 25 Jul 2003, Peter S. Christopher wrote:

> Hi listers,
> 
>       I'm having a problem finding a primitive function in one of my
> modules. Here is the setup. I have a C program which (after
> booting guile) defines a routine a-la:
> 
> scm_c_define_gsubr("dvect?", 1, 0 ,0, dvect_p);
> 
> Then the program loads a file using
> 
> scm_c_primitive_load("root.scm");
> 
> 
> At the top of root.scm I include a module via: (use-modules (slab)) Now
> within the text of the slab.scm I expect to use dcect?. However, the guile
> cannot reference dvect? -- it can't find it. The problem is that dvect? is
> being put in the (guile-user) module. And the slab module can't see it.
> I've tried to (use-modules (guile-user)) and this seems to have no effect.
> 
> Does anyone have any ideas how I can get it so that the slab module can
> see dvect? ?  

I had similar problems trying to make a program compatible with both
guile-1.5/1.6 and guile-1.4 - one of the differences between the two is
which module C primitives end up in vs. the default module that scheme
code runs in.

I came up with this hack, placed immediately after initializing guile and
before defining primitives to make guile-1.6 behave enough like 1.4:

#ifdef HAVE_SCM_C_READ_STRING
        {       SCM exp = scm_c_read_string("(define-module (guile))");
                scm_primitive_eval_x(exp);     }
#endif

While this works, making guile 1.6 behave like 1.4 isn't really the way to
go any longer.

I see that the guile-1.6.4 reference manual has a nice section "Accessing
Modules from C."  (thanks authors!)

When writing a program for guile >= 1.6 only, it appears that one should
use scm_c_define_module() to place their C primitives into the desired
application-specfic module.

Steve


> Thanks for any help,
> 
> Pete
> 
> _______________________________________________
> Guile-user mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/guile-user
> 

-- 
--
Steve Tell  address@hidden 






reply via email to

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