Unlike some traditional AWK (or BASIC or Pascal) dialects, libfawk also tries to extend the language to make large, modular system of scripts maintainable, modules reusable. For this, libfawk offers the following extra features:
These three extensions togheter make it easy to write reusable libraries that maintain struct-like data or even objects (which are really just arrays). An object (array) can have members that reference to "methods" (fawk/fpas/fbas functions handling the given object) - so things like obj.print(obj, ...) work. Because array-in-array, a struct (or object) can have members that are other structs (or objects), allowing the script to build hierarchic data.
Since array-in-array uses array referencing, not deep copy, it is easily possible to represent lists or trees of structs (arrays) in memory.