I make some functions to act like in functional programming.
(M2000 last revision 55, edition 8)
Code:\\ functional programming \\ We can mimic functional programming using stack \\ and the call to function where we can use stack for input/output \\ We push reference to functions in stack also \\ We use a tristate flag to inform for first pass and last pass, for stack preparation \\ function result { \\ take 1 and give 1 read tristate read &what() push tristate call what() read a data a if tristate>=0 then push &what() } function simplelist { drop 1 \\ no need tristate if empty then push 0 } function integer { read tristate if tristate=1 then push 0 \start read a : push a+1 if tristate>=0 then over } function square_of { read tristate read &what() push tristate call what() read a data a*a if tristate>=0 then push &what() } function cubic_of { read tristate read &what() push tristate call what() read a data a*a*a if tristate>=0 then push &what() } function take { read many read &code() tristate=1 \\ start { many-- if many<1 then tristate=-1 push tristate \\ the end message call code() if tristate>=0 then loop tristate=0 } } \\ this is the program \\ 4 actions form 60,30 flush \\ take 25 square_of integer call take(25, &square_of(), &integer()) while not empty {print number,} print \\ take 25 cubic_of integer call take(25, &cubic_of(), &integer()) while not empty {print number,} print \\ take 5 cubic_of simplelist 2,8,15,20,12 call take(5, &cubic_of(), &simplelist(),2,8,15,20,12) while not empty {print number,} print \\ take 5 result integer call take(5,&result(), &integer()) while not empty {print number,} \\ print 1,2,3,4,5 print




Reply With Quote