| 
<?phpnamespace eMacros\Package;
 
 use eMacros\Runtime\PHPFunction;
 use eMacros\Runtime\Collection\Car;
 use eMacros\Runtime\Collection\Cdr;
 use eMacros\Runtime\Collection\ArrayPop;
 use eMacros\Runtime\Collection\ArrayMap;
 use eMacros\Runtime\Collection\ArrayWalk;
 use eMacros\Runtime\Collection\ArrayPush;
 use eMacros\Runtime\Collection\ArrayShift;
 use eMacros\Runtime\Collection\ArrayUnshift;
 use eMacros\Runtime\Collection\ArrayShuffle;
 use eMacros\Runtime\Collection\ArraySort;
 
 class ArrayPackage extends Package {
 public function __construct() {
 parent::__construct('Array');
 
 //array functions
 $this['in'] = new PHPFunction('in_array');
 $this['count'] = new PHPFunction('count');
 $this['range'] = new PHPFunction('range');
 $this['chunk'] = new PHPFunction('array_chunk');
 $this['combine'] = new PHPFunction('array_combine');
 $this['count-values'] = new PHPFunction('array_count_values');
 $this['diff'] = new PHPFunction('array_diff');
 $this['fill'] = new PHPFunction('array_fill');
 $this['filter'] = new PHPFunction('array_filter');
 $this['flip'] = new PHPFunction('array_flip');
 $this['intersect'] = new PHPFunction('array_intersect');
 $this['keys'] = new PHPFunction('array_keys');
 $this['merge'] = new PHPFunction('array_merge');
 $this['search'] = new PHPFunction('array_search');
 $this['slice'] = new PHPFunction('array_slice');
 $this['pad'] = new PHPFunction('array_pad');
 $this['rand'] = new PHPFunction('array_rand');
 $this['product'] = new PHPFunction('array_product');
 $this['sum'] = new PHPFunction('array_sum');
 $this['unique'] = new PHPFunction('array_unique');
 $this['values'] = new PHPFunction('array_values');
 $this['reduce'] = new PHPFunction('array_reduce');
 $this['replace'] = new PHPFunction('array_replace');
 $this['reverse'] = new PHPFunction('array_reverse');
 
 if (function_exists('array_column')) {
 $this['column'] = new PHPFunction('array_column');
 }
 
 //macros
 $this['car'] = new Car();
 $this['cdr'] = new Cdr();
 $this['pop'] = new ArrayPop();
 $this['map'] = new ArrayMap();
 $this['walk'] = new ArrayWalk();
 $this['push'] = new ArrayPush();
 $this['shift'] = new ArrayShift();
 $this['unshift'] = new ArrayUnshift();
 $this['shuffle'] = new ArrayShuffle();
 
 //sort
 $this['sort'] = new ArraySort('sort');
 $this['rsort'] = new ArraySort('rsort');
 //preserve association sort
 $this['asort'] = new ArraySort('asort');
 $this['arsort'] = new ArraySort('arsort');
 //key sort
 $this['ksort'] = new ArraySort('ksort');
 $this['krsort'] = new ArraySort('krsort');
 //callable sort
 $this['usort'] = new ArraySort('usort');
 $this['uasort'] = new ArraySort('uasort');
 $this['uksort'] = new ArraySort('uksort');
 
 //count constants
 $this['COUNT_NORMAL'] = COUNT_NORMAL;
 $this['COUNT_RECURSIVE'] = COUNT_RECURSIVE;
 
 //sort constants
 $this['SORT_REGULAR'] = SORT_REGULAR;
 $this['SORT_NUMERIC'] = SORT_NUMERIC;
 $this['SORT_STRING'] = SORT_STRING;
 $this['SORT_LOCALE_STRING'] = SORT_LOCALE_STRING;
 $this['SORT_NATURAL'] = SORT_NATURAL;
 $this['SORT_FLAG_CASE'] = SORT_FLAG_CASE;
 }
 }
 ?>
 
 |