Previous Contents Next

3.2   Values

This section describes the kinds of values that are manipulated by join-calculus programs.

Integer numbers

Integer values are integer numbers from -230 to 230-1, that is -1073741824 to 1073741823. The implementation may support a wider range of integer values: on 64-bit platforms, the current implementation supports integers ranging from -262 to 262-1.

Character strings

String values are finite sequences of characters. The current implementation supports strings containing up to 224 - 6 characters (16777210 characters).


Booleans values are denoted by true and false.

Port names

Port names are the main value of the join-calculus. They can be seen as channels that carry arguments. There are two kinds of port names: asynchronous ones and synchronous ones. Sending messages on an asynchronous port name is the basic instruction of the language. The invocation of a synchronous name is more like a function call: it gives back results and can occur inside expressions.


Locations provide support for distributed programming in the join-calculus. A location is a complete runtime unit, with both locally defined port names and definitions and locally running processes. Location may be created, die or migrate.

External values

External values are lifted from the Objective Caml language. External values are abstract values at the join-calculus level, thus no special syntax is provided for them. The standard join-calculus distribution provides floating-point numbers and characters as base external values. Objective Caml data structures such as arrays or lists are also available in the libraries. Other externals values can be defined by the programmer.

NB: In contrast with the other kinds of values, the join-calculus only provides partial distributed support for external values as they move from on runtime to another.
Previous Contents Next