Hi Alexander,
thanks for all that information, definitely worth a wiki entry.
Due to limited skills number 1.  and number 4./5. seem to be the most
realistic options for me, but I will need some time to digest so much new
My plans are to read and learn more about picolisp the next weeks, while
terminating some other stuff, and then build a small but real webapp in
picolisp - I'm already  looking forward for that.
Picolisp seems so easy and so powerful at the same time.

2011/3/24 Alexander Burger <a...@software-lab.de>

> Hi Thorsten,
> > I wonder if one could build a picolisp app that fully integrates with R
> > (statistics software, http://www.r-project.org/) and GRASS GIS (a
> command
> > line GIS that uses a superset of shell commands, http://grass.fbk.eu/)
> on
> > its linux host machine?
> There are basically five ways a PicoLisp program can be integrated with
> other software:
> 1. Call existing library functions
>   This is available only in the 64-bit version with the 'native'
>   function. C functions can be directly called from Lisp code. For an
>   extensive example, look at "lib/openGl.l".
> 2. Write a shared object file (DLL)
>   This is analog in the 32-bit and 64-bit versions, but due to the
>   underlying implementation such shared object files are written in C
>   for the 32-bit version, and in assembly for the 64-bit version.
>   Examples are the 'ext' and 'ht' libraries, built in the Makefile's
>   ("src/ext.c", "src/ht.c", "src64/ext.l" and "src64/ht.l").
> 3. Write inline C code
>   The 32-bit and 64-bit versions of PicoLisp behave a little different
>   here. In the 32-bit version, these functions must contain glue code
>   to convert between C and Lisp data. The file "misc/crc.l" contains an
>   example for both versions.
> 4. Start other programs as sub-processes, and communicate with their
>   standard I/O via pipes. This can be done with the 'in', 'out' and
>   'pipe' functions.
> 5. Use sockets or some other type of IPC (e.g. named pipes) to
>   communicate with another program.
> Did I forget some other way?
> > It's always claimed that clojure is great because it has access to
> countless
> > java libraries on the jvm. But clojure is all about functional
> programming,
> BTW, there is also ErsatzLisp, a subset of PicoLisp written in Java. It
> provides for some ways to call the underlying JVM.
> > concurrency and avoiding mutable state, while java is all about objects
> with
> > mutable state. So it would only make sense for a clojure program to call
> > java libraries like pure functions without side effects and use the
> return
> > value, otherwise the clojure clean and scalable programming model would
> be
> > messed up.
> Yep. The same problems apply to ErsatzLisp.
> > Can't picolisp do this too? Call Java (and C, C++, Python ...) functions
> Several years ago, the PicoLisp GUI depended heavily on Java applets.
> This stuff is still available as a separate tarball "picoJavaGUI.tgz".
> It also contains a file "lib/java.l" which provides an interface to a
> separately running JVM. This was never really used, though.
> In one project we communicated with C++ programs via a PLIO library.
> PLIO is the format used by PicoLisp internally for marshalling database
> objects, for the 'pr' and 'rd' functions, and family IPC ('tell' etc.).
> A skeleton for PLIO can be fetched from "software-lab.de/plio.tgz".
> I'll gladly explain more details if you have specific questions :)
> Cheers,
> - Alex
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to