Syntactic sugar to call Java from ABCL?
    Mark Evenson 
    evenson at panix.com
       
    Sat Mar  5 09:02:08 UTC 2016
    
    
  
On 2016/3/4 18:54, EGarrulo wrote:
> Hello ABCL developers,
> 
> has anybody written some macros to make calling Java from ABCL more 
> straightforward?  I mean something that, instead of this code from the ABCL 
> documentation:
> 
> 
> (defun void-function (param)
>   (let* ((class (jclass "Main"))
>          (intclass (jclass "int"))
>          (method (jmethod class "addTwoNumbers" intclass intclass))
>          (result (jcall method param 2 4)))
>     (format t "in void-function, result of calling addTwoNumbers(2, 4): ~a~%" 
> result)))
> 
> 
> would let you write something like this, for example:
> 
> 
> (format t
>         "in void-function, result of calling addTwoNumbers(2, 4): ~a~%"
>         ;; Let's imagine that we have defined a -> macro.
>         (-> |Main.addTwoNumbers| 2 4)
abcl-1.3.3 currently includes code in the ABCL-CONTRIB mechanism for two
such additional syntaxes, namely [JFLI-ABCL][1] and [JSS][2].
[1]: http://abcl.org/trac/browser/trunk/abcl/contrib/jfli/README
[2]: http://abcl.org/trac/browser/trunk/abcl/contrib/jss/README.markdown
One may load these packages by
```lisp
(require :abcl-contrib)
(require :jfli)
```
or
```lisp
(require :abcl-contrib
(require :jss)
```
I don't really know much about JFLI, but use JSS extensively.
The example of
```lisp
(-> |Main.addTwoNumbers| 2 4)
```
would become
```lisp
(#"addTwoNumbers" 'Main 2 4)
```
in JSS.
-- 
"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."
    
    
More information about the armedbear-devel
mailing list