Library Reference
Note: the LMNtal API is under development and its specification
is subject to change.
In the following, arguments with the '+' sign are those consumed upon
reaction with the library atoms, while arguments with the '-' sign are
those generated by the library API. The slash (/) notation is used to
indicate the arity of atoms.
Library nlmem
The library nlmem (nonlinear membrane) contains an implementation of
the following rule schemes that use aggregates:
R=nlmem.copy(X,a), {$p[X|*Z]} :-
R=copied(X1,X2),
{$p[X1|*Z1]}, {$p[X2|*Z2]},
a(*Z1,*Z2,*Z).
nlmem.kill(X,b), {$p[X|*Z]} :- b(*Z).
They are rule schemes in the sense that a and b are metasymbols to be replaced by any symbolic names.
- nlmem.copy(+{P},+a,-R)
- An abbreviated form of
(nlmem.copy(R0,a,R), {+R0,P}).
Creates two copies of the
cell {+R0,P} with all its free links renamed, and
connects R and the two fresh copies of R0 using
a ternary atom with the name a.
Furthermore, for each free link L of the original cell
{+R0, P} (except R0 that will disappear together with the '+'), nlmem.copy
connects the two fresh copies of L and
the original L via the ternary atom a.
- nlmem.copy(+{P},-R)
- Same as {nlmem.copy({P},copied,R).
- nlmem.kill(+{P},+b)
- An abbreviated form of
(nlmem.kill(R0,b), {+R0,P}).
Connects each free link L of the cell
{+R0, P} (except R0 that will disappear together with the '+') to the unary atom b.
- nlmem.kill(+{P})
- Same as nlmem.kill({P},killed).
Library io (SLIM)
Input/output in SLIM is done through ports. An operation on
a port will return a new port to be used for future operations on the port.
- io.stdin(-RetPort)
- Returns a standard input port.
- io.stdout(-RetPort)
- Returns a standard output port.
- io.read_line(+Port,-RetPort,-Str)
- Read a single line Str from the input
port Port and returns a new port RetPort.
- io.read_char(+Port,-RetPort,-C)
- Read a character C from the input
port Port and returns a new port RetPort.
- io.close_port(+Port,-RetPort)
- Close Port and returns it as RetPort.
Further operations on the port will cause an error.
- io.free_port(+Port)
- Frees Port.
- io.print_char(+Port,+C,-RetPort)
- Print a character C to Port and
return a new port RetPort.
- io.print(+Port,+Str,-RetPort)
- Print a string Str to Port and
return a new port RetPort.
- io.print_newline(+Port,-RetPort)
- Print a newline to Port and
return a new port RetPort.
- io.print_line(+Port,+Str,-RetPort)
- Print a string Str and a newline
to Port and return a new port RetPort.
- io.print_mem(+Port,+M,-RetPort)
- Print the content of the membrane M
to Port and return a new port RetPort.
- io.open_output_string(-SRetPort)
- Creates a new string output port SRetPort.
- io.open_input_string(+Str,-SRetPort)
- Creates a new string input port
SRetPort consisting of the characters in the string Str.
- io.output_string(+Port,-RetPort,-Str)
- Dumps the content of the
string port Port and returns it as RetPort.
Library io (LMNtal Java)
- io.popup(+Str)
- Displays the string Str in a pop-up window.
- io.input
- Reads an atom name typed into a pop-up window. The
result is a new nullary atom with the given name.
- io.input(+Atom)
- Displays the name of the unary Atom on a pop-up window
and reads an atom name typed into the window.
The result is a two-atom molecule with done/1 and a unary atom with the
given name.
- io.input(+Atom,-X)
- Dislays the name of the unary Atom on a pop-up
window and reads an atom name typed into the window.
The result is a two-atom radical with done/2 and a unary atom with the
givne name, of the form newAtom(Y), done(Y,X).
- io.inputInteger(+Atom,-X)
- Same as above, except that the result
is Int(X), where Int is an integer (which is a unary atom in
LMNtal) that has been typed in.
- io.use
- Enables the use of standard input (System.in) and standard
output (System.out). The result consists of two molecules representing
standard input and standard output.
- io.readline(-Atom,-Res)
- reads one line from standard input,
connnecting to Atom a unary atom whose name is the input string
(or an empty string if the string can't be read), and
connects done/1 or nil/1 to Res, depending on whether
the string could be read. To be used with io.use.
- io.print(+Atom,-Res)
- prints the name of the unary Atom (a string or
a non-string atom) into standard output, and connects
done/1 to Res. To be used witn io.use.