%%HP: T(3)A(R)F(.); @ @ @ KONTROLA ARGUMENTU @ Real List|String ENVACHK(Prog function); @ Real List|String ENVACHK(List args); \<< @ @ @ KONTROLA TYPU FUNKCE @ Real Prog ckftype(Prog function); @ Real Prog ckftype(Name globalname); \<< IF { 5. 6.} OVER TYPE POS THEN RCL END 8. OVER TYPE \=/ @ 0.|1. obj \>> "Function" @ "Funct \<< \>> \-> ckftype errftxt \<< @ obj @ Je zadany objekt typu List? IF DUP @ obj obj TYPE @ type obj 5. @ 5. type obj == @ 1.|0. obj THEN @ { {args} @ Ma seznam argumentu 4 polozky? IF DUP @ {args} {args} SIZE @ size {args} 4. @ 4. size {args} == @ 1.|0. {args} THEN @ { {args} DUP @ {args} {args} 1. @ ifnc {args} {args} GET @ func {args} @ Ma zadana funkce spravny typ? IF ckftype EVAL @ 0.|1. func {args} THEN @ { func {args} DROP2 errftxt 1. @ RTN(1) errtext ELSE @ }{ \<< \>> {args} 1. @ ifnc \<< \>> {args} SWAP @ \<< \>> ifnc {args} PUT @ {args} @ Maji zadane pocty spravny typ? DUP @ {args} {args} 2. @ iper {args} {args} 3. @ irep iper {args} {args} SUB @ {nums} {args} DUP @ {nums} {nums} {args} \<< TYPE \>> @ \<< \>> {nums} {nums} {args} MAP @ {types} {nums} {args} IF \GSLIST @ 0.|N {nums} {args} THEN @ { {nums} {args} DROP2 "Numbers type" 1. @ RTN(1) errtext ELSE @ }{ {nums} {args} @ Nejsou zadane pocty <= 0? \<< 0. \<= \>> @ \<< \>> {nums} {args} MAP @ {errf} {args} IF \GSLIST @ 0.|N {args} THEN @ { {args} DROP "Numbers \<= 0" 1. @ RTN(1) errtext ELSE @ }{ @ Maji options spravny typ? DUP @ {args} {args} 4. @ iopt {args} {args} GET @ options {args} { 2. 6. } @ {2. 6.} options {args} SWAP @ options {2. 6.} {args} TYPE @ topt {2. 6.} {args} IF POS @ 0.|.2 {args} THEN @ { {args} 0. @ RTN(0) {args} ELSE @ }{ options {args} DROP "Options type" 1. @ RTN(1) errtext END @ } END @ } END @ } END @ } ELSE @ }{ {args} DROP "Arguments count" 1. @ RTN(1) errtext END @ } ELSE @ }{ func IF ckftype EVAL @ 0.|1. \<< \>> THEN @ { \<< \>> DROP errftxt 1. @ RTN(1) errtext ELSE @ }{ \<< \>> @ K samotne funkci pridat default hodnoty ENVDFLT @ {args} 0. @ RTN(0) {args} END @ } END @ } \>> \>>