#include #include SCM foo(SCM num) { return scm_from_int(scm_to_int(num)+5); } void * load_bar(void * data) { scm_init_guile(); scm_c_primitive_load("bar.scm"); return NULL; } void* exec_repl(void* data) { scm_init_guile(); scm_shell(0,NULL); return NULL; } int main (int argc, char** argv) { pthread_t thread,repl; scm_init_guile(); pthread_create(&repl,NULL,exec_repl,NULL); scm_c_define_gsubr("foo",1,0,0,foo); pthread_create(&thread,NULL,load_bar,NULL); while(1) { SCM_TICK; } }