2 PLAN
PLAN is a simple, functional programming language based on the simply-typed
lambda calculus with some added primitives to express remote evaluation.
PLAN may be thought of as an Active Network scripting language such that
each active packet consists of a PLAN program. PLAN programs may invoke
services, which make up a library of functions resident on an Active
node. Services are described in more detail in Section 7.
PLAN is resource limited in two ways. All PLAN programs are guaranteed to
terminate, limiting the resources consumed on any particular active node.
Further, PLAN applications (that is, series of PLAN packets spawned from an
initial packet) are limited by a global resource bound, thus limiting the
resources consumed from the network at large.
The newest version of PLAN supports static type inference of source
programs, eliminating (some of) the need for type annotations. In order for
the inference algorithm to properly check calls to the services, the
programmer must provide service declarations in his program indicating
the types of service functions or values. PLAN functions and bindings may be
polymorphic, as well as those of services. More on these may be found in
Section 7.