call_table(TbA, TbP, Dct): { tbA: TbA[TAB_TAB_idx]; tbP: TbP[TAB_TAB_idx]; siz: size(tbA); if(siz = size(tbP), { iter(k): if(not(k > siz), { arg: tbA[k]; par: tbP[k]; tag: par[TAG_idx]; cas: bind_case(tag); Dct:= cas(arg, par, Dct); iter(k+1) }, void); iter(1) }, error('Illegal argument count')); Dct }; call_variable(Tab, Var, Dct): { nam: Var[VAR_NAM_idx]; tab: Tab[TAB_TAB_idx]; siz: size(tab); exp: if(siz > 0, { arg[siz]: 0; iter(k): if(not(k > siz), { arg[k]:= eval(tab[k]); iter(k+1) }, TAB(arg)); iter(1) }, Empty); add(nam, exp, Dct) };