HELP MAPLIST John Williams Jul 1985
Updated: Adrian Howard Mar 1992
maplist(LIST_1, P) -> LIST_2
LIST2 -> maplist(LIST1, P)
This procedure takes as arguments a list and a procedure. It returns a
(possibly empty) list whose elements are the result of applying the
given procedure to each element of the argument list. The updater is
defined in such a way that
listvals -> maplist(list,proc)
is equivalent to
dl(listvals) -> applist(rev(list), updater(proc))
For example:
maplist([1 4 9 25], sqrt) =>
** [1.0 2.0 3.0 5.0]
maplist([a b c d], procedure(x); [^x] endprocedure) =>
** [[a] [b] [c] [d]]
vars list1 = [[a 1] [b 2] [c 3]];
vars list2 = [A B C];
list2 -> maplist(list1,hd);
list1 =>
** [[A 1] [B 2] [C 3]]
-maplist- could be defined as:
define maplist(list, proc);
lvars list, procedure proc;
[% applist(list, proc) %]
enddefine;
and its -updater- as
define updaterof maplist(vals,list,proc);
lvars vals,list, procedure proc;
dl(vals) -> applist(rev(list), updater(proc))
enddefine;
Also see:
HELP *APPDATA --- Apply a procedure to every element of a structure
HELP *LOOPS --- For other types of iteration
HELP *MAPDATA --- Similar to -maplist-, but takes other data
structures
REF *DATA --- Details on generic data procedures.
REF *APPLIST --- Apply a procedure to every element of a list
REF *LISTS --- Full information on lists in POP-11
REF *NCMAPLIST --- Non-copying version of -maplist-
--- C.all/help/maplist
--- Copyright University of Sussex 1992. All rights reserved. ----------Author: John Williams Jul 1985