1:-  module(r, 
    2    [
    3      r_initialize/1,
    4      r_close/1,
    5      r/1,
    6      r/2,
    7      r_source/2
    8    ]).    9
   10:- use_module(library(rs_rolog)).   11
   12:- dynamic initialized/0, initialized/1.   13
   14:- initialization(r_initialize).   15
   16% Initialize R, load some code into the base environment.
   17r_initialize,
   18    initialized
   19 => true.
   20
   21r_initialize
   22 => pack_property(interval, directory(Dir)),
   23    directory_file_path(Dir, 'R', Dir1),
   24    r_source(r, Dir1),
   25    assert(initialized).
   26
   27r_initialize(Session),
   28    initialized(Session)
   29 => true.
   30
   31r_initialize(Session)
   32 => rs_init(Session),
   33    pack_property(interval, directory(Dir)),
   34    directory_file_path(Dir, 'R', Dir1),
   35    r_source(r, Dir1),
   36    assert(initialized(Session)).
   37
   38r_close(Session),
   39    initialized
   40 => rs_close(Session).
   41
   42r_close(_)
   43 => true.
   44
   45% Call R
   46r(Expr)
   47 => rx_call(Expr).
   48
   49% Evaluate R expression
   50r(Expr, Res)
   51 => rx_eval(Expr, Res).
   52
   53r_source(Name, Dir)
   54 => file_name_extension(Name, 'R', File),
   55    directory_file_path(Dir, File, Path),
   56    atom_string(Path, String),
   57    r(source(String))