Embedded Julia for SWI Prolog
This module allows Prolog code to use an embedded instance of Julia, a language for numerical and technical computing.
Make sure you have installed Julia, and that the julia executable is on your PATH.
Then do
?- pack_install(pljulia).
?- use_module(library(julia)).
?- ?cumsum(rand(4,4)).
?- X <? 6*7.
?- "hello world"[1:2:end] ?> X.
?- X <? rand(3,4,5), ?X.
?- X <? #(1,"a",2.2,[1,2,3]).
?- maplist(jl_call("println"), [1,3.14,#("a",2.2,float64([3],[4,5,6]))], _).
?- ?pl_call(:user,:succ,4).
See examples/example.pl for more, including plotting.
Add jl_map/2
, like jl_call/N
but mapped over lists.
Generate more informative Prolog exceptions from Julia exceptions
Handle more Julia types directly: more base types? Arrays of more types? BitArray?
Handle more node types in Julia syntax trees.
Consider having jl_array_t
structures floating around as Prolog BLOB
atoms, assuming they can be protected from Julia's garbage collector.
Should be more efficient than converting to/from Prolog lists when dealing
with numeric arrays.
Handle more Julia syntax:
; to separate positional args from keyword args
{} for parametric types