TOC, 1, 2, 3,
4, 5, 6,
7, 8, 9,
10, 11, 12
13, 14
4) LANGUAGE ISSUES
4.1) What restrictions are there on the
types of functions that can be eval'd
?
The return value
of the function must be a scalar type. Aggregate types are not
allowed.
4.2) What restrictions are there on the
types of parameters that can be passed to eval'd
functions?
Parameters to eval'd
functions must be
scalar types, with a limit of 16 parameters.
4.3) What restrictions are there on the
values that can be put into a tuple?
The only restriction is that
pointer values can't be put into tuples. Values pointed to by pointers can be
put into tuples as in the example:
struct x *p;
...
out("foo", p:sizeof(struct x));
Normal structures and arrays can easily be put into tuples, for
example:
struct x a;
double b[100];
...
out("bar", a, b);
4.4) Is the use of inp
and
rdp
recommended?
These operations should be used with
caution, as they are more easily abused then other operations. They are timing
dependent, and can lead to race conditions. This is particularly true since
outs
execute asynchronously in Network Linda. Usually, thinking
about the problem will lead to a better solution using in
or
rd
.
Nevertheless, they can be useful at times. The important
thing is not to draw any strong conclusions from an inp
or
rdp
failing unless you really know what you are doing.
TOC, 1, 2, 3,
4, 5, 6,
7, 8, 9,
10, 11, 12
13, 14