Unbound scheme procedures when calling from Java
Per Bothner
per@bothner.com
Tue Apr 1 16:29:00 GMT 2003
Chris Dean wrote:
>>>We are trying to call our own Scheme procedures from Java.
>
>
> Another way to do it is to get a ModuleMethod and call that from Java.
> This will work no matter what the setting of module-static:
> ModuleMethod test = (ModuleMethod) env.get( "test", null );
> System.err.println( "test = " + test );
> System.err.println( "result = " + test.apply0() );
Slightly better/cleaner might be to use Procedure:
Procedure test = (Procedure) env.get( "test", null );
test.apply0();
Though I think it unlikely that user-defined functions
will no longer be ModuleMethod, it is even less likely
that they will cease being Procecedures. In any case,
using Procedure also works for builtin or halt-written
procedures.
You might also consider using 'eval' instead of 'get':
Scheme scm = Scheme.getInstance();
// or scm = new Scheme();
Procedure test = (Procedure) scm.eval("test");
This is slower than using get (though it doesn't matter
unless its in an inner loop), but you don't have to
explicitly work with environments.
--
--Per Bothner
per@bothner.com http://per.bothner.com/
More information about the Kawa
mailing list