Fold()

From TinyMUX
Jump to navigation Jump to search

FOLD()

 FUNCTION: fold([<obj>/]<attr>, <list>[, <base-case>[, <delim>])
 This function iteratively processes a list through a function, feeding
 the result of one step into the next step as %0, passing in the next element
 from the list as %1.
 If a base case is provided, it is used as the initial %0.  If not, the first
 list element is passed as %0 and the second is passed as %1, and subsequent
 iterations proceed normally.
 <delimiter> may be used to specify a delimiter other than space, but you
 must specify a base case in order to specify the delimiter.
 Examples:
   > &REP_NUM object=[%0][repeat(%1,%1)]
   > say fold(object/rep_num,1 2 3 4 5,->)
   You say, "->122333444455555"
   > &ADD_NUMS object=add(%0,%1)
   > say fold(object/add_nums,1 2 3 4 5)
   You say, "15"
 Related Topics: u(), iter(), map(), filter()