fsf1 = FNpartial(PROCfs(), FNf1()) fsf2 = FNpartial(PROCfs(), FNf2()) DIM seq(3) PRINT "Calling function fsf1 with sequence 1:" seq() = 0, 1, 2, 3 : PROC(fsf1)(seq()) FOR i% = 0 TO 3 : PRINT seq(i%); : NEXT : PRINT PRINT "Calling function fsf1 with sequence 2:" seq() = 2, 4, 6, 8 : PROC(fsf1)(seq()) FOR i% = 0 TO 3 : PRINT seq(i%); : NEXT : PRINT PRINT "Calling function fsf2 with sequence 1:" seq() = 0, 1, 2, 3 : PROC(fsf2)(seq()) FOR i% = 0 TO 3 : PRINT seq(i%); : NEXT : PRINT PRINT "Calling function fsf2 with sequence 2:" seq() = 2, 4, 6, 8 : PROC(fsf2)(seq()) FOR i% = 0 TO 3 : PRINT seq(i%); : NEXT : PRINT END REM Create a partial function: DEF FNpartial(RETURN f1%, RETURN f2%) LOCAL f$, p% DIM p% 7 : p%!0 = f1% : p%!4 = f2% f$ = "(s())" + CHR$&F2 + "(&" + STR$~p% + ")(" + \ \ CHR$&A4 + "(&" + STR$~(p%+4) + ")(),s()):" + CHR$&E1 DIM p% LEN(f$) + 4 $(p%+4) = f$ : !p% = p%+4 = p% REM Replaces the input sequence with the output sequence: DEF PROCfs(RETURN f%, seq()) LOCAL i% FOR i% = 0 TO DIM(seq(),1) seq(i%) = FN(^f%)(seq(i%)) NEXT ENDPROC DEF FNf1(n) = n * 2 DEF FNf2(n) = n ^ 2