LMNtal Java allows inline code written in Java, and SLIM allows LMNtal programs to call C functions.

*Foreign-Language Interface in SLIM

SLIM allows LMNtal programs to call functions written in C.  An LMNtal atom
|'$callback'('''function_name''', '''arg1''', '''arg2''', ...)|

>'$callback'('''function_name''', '''arg1''', '''arg2''', ...)

calls the C function '''function_name''' with the specified arguments.  Examples of callbacks can be found in the library programs located in the $LMNTAL_HOME/lib directory, and the corresponding C functions can be found in the $LMNTAL_HOME/src/ext directory.

*Foreign-Language Interface in Java


 inline_define atom
    [:/*inline_define*/ inline_define_code_in_Java :]
 inline atom
    [:/*inline*/ inline_code_in_Java :](X1,...,Xn)
An '''inline_define atom''' is an atom of the form

>[:/*inline_define*/ '''inline_define_code_in_Java''' :] .

An '''inline atom''' is an atom of the form

>[:/*inline*/ '''inline_code_in_Java''' :](X1,...,Xn) .


The execution of inline code takes place
immediately after the rewriting task of the rule
that creates the inline atom is finished.

Defined variables:
 me .... the inline atom itself
 mem ... me.getMem() 
Two defined variables can be used in the Java code in an inline atom:

>''me'' ... the inline atom itself;~
>''mem'' ... me.getMem().


 [:/*inline_define*/class Foo { static int counter = 0; } :].

 % ==> prints LMNtal

 hello(X) :- [:/*inline*/
               Atom a = mem.newAtom(new Functor("ok",1));
 % ==> ok(there)

Front page List of pages Search Recent changes Backup   Help   RSS of recent changes