Lambda

 

Lambda Overview

Each Lambda is an executable software object which is storable as a fundamental unit of data in an AIS repository. The Lambda Object data type can be mobile between copies of Analytic Information Server across the Internet.

Lambda Declaration

The lambda function supports the creation of unbound-unnamed Lambdas. The multiple ways of declaring bound-named Lambdas are as follows:

Each Lambda declaration contains the declaration of variables (including argument variables), the of Lambda interfaces, and any Lambda event keywords.

Lambda Properties

An Lambda is a First Class Object. A First Class object in Analytic Information Server is any object that is fully exposed, i.e., all of the Structures are visible and modifiable by the other Lambdas in the system. All Lambdas have the following data structure elements: source code (Sc), pseudo code instructions (Pc), argument variables (Av), self object variables (Sv), persistent variables (Pv), persistent class variables (Cv), register variables (Rv), temporary variables (Tv), interfaces (In), native code (Nc), and the virtual machine emulator (Vm). All Lambda structures can viewed and modified by the programmer.

Object or Heap Data Type

The Lambda Data Type is an example of an AIS Object Data Type.

The Analytic Information Server Object Types are stored in the Heap and are managed by the Heap manager. The Analytic Information Server Heap manager supports object resizing, garbage collection, and anti-fragmentation algorithms so that the user may concentrate on the analysis and modeling of data rather than on memory management. Without exception, all of the Object types are identified by an object id. The object id identifies a block of memory, managed by the Analytic Information Server memory manager, in which the Object's data is stored.

The Analytic Information Server Heap Object and Native Data types can be saved and loaded to and from persistent (disk file) storage at any time. Words with immediate data are saved on disk in fixed length records equal to the size of the Word. Words with Heap object references are saved in fixed length records, which are automatically expanded to include the contents of the Heap object, and any objects referenced by the Heap object, etc. This feature is called Object Closure Management and is automatic with every Analytic Information Server database save.

Analytic Information Server Words may be loaded from any database repository record at any time. If the data in the record is immediate, the database load fills the Word with the immediate data. If the data in the record is an object closure, the database load fills the Word with a Heap object reference, and all of the objects in the record are loaded back into the Heap with the same referential relationships they had when they were saved in the repository.

 

Data Type Examples

The Lambda object can be demonstrated by the following examples.

Example_Lambda_argCount_001 Example_Lambda_argFetch_001 Example_Lambda_balance_001 Example_Lambda_callcc_001
Example_Lambda_compareEQ_008 Example_Lambda_compareGE_008 Example_Lambda_compareGT_008 Example_Lambda_compareLE_008
Example_Lambda_compareLT_008 Example_Lambda_compareNE_008 Example_Lambda_compare_008 Example_Lambda_compile_001
Example_Lambda_copy_008 Example_Lambda_debugBrowsableProcs_001 Example_Lambda_debug_001 Example_Lambda_defchild_001
Example_Lambda_define(macro)_001 Example_Lambda_define_001 Example_Lambda_defmacro_001 Example_Lambda_defmacro_002
Example_Lambda_deforphan_001 Example_Lambda_defriend_001 Example_Lambda_defun_001 Example_Lambda_defun_002
Example_Lambda_disassemble_001 Example_Lambda_eval_001 Example_Lambda_exportTab_001 Example_Lambda_globalBinding_001
Example_Lambda_importTab_001 Example_Lambda_inspect_001 Example_Lambda_isLambda_001 Example_Lambda_lambda_001
Example_Lambda_makeLambda_001 Example_Lambda_myself_001 Example_Lambda_new_001 Example_Lambda_new_002
Example_Lambda_new_003 Example_Lambda_onError_001 Example_Lambda_ref_017 Example_Lambda_send_008
Example_Lambda_send_009 Example_Lambda_setq_005 Example_Lambda_setq_015 Example_Lambda_type_009
Example_Lambda_type_010