(* These are the functions provided by the runtime system. *) type primitive = (* Unary functions for writing an integer out. *) Write Writeln (* Nullary function for reading an integer in. *) Readln (* Unary function for allocating a memory block. Parameter is the desired block size in bytes. This operation is not available at the source level, because it is untyped. Instead, in [PP], the expression form [EArrayAlloc] is used. *) Alloc (* Callees are subjects of function calls. *) type callee = (* User-defined function. *) CUserFunction of string (* System-defined function. *) CPrimitiveFunction of primitive