This is the mail archive of the kawa@sources.redhat.com mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Unbound scheme procedures when calling from Java


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 at bothner dot com   http://per.bothner.com/



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]