Applies fun to the elements in arr and collects the results.
arr is treated as a set of elements, as follows:
array
multiset
string
fun is applied in order to each element. The results are
collected, also in order, to a value of the same type as
arr , which is returned.
mapping
fun is applied to the values, and each result is assigned
to the same index in a new mapping, which is returned.
program
The program is treated as a mapping containing the
identifiers that are indexable from it and their values.
object
If there is a lfun::cast method in the object, it's
called
to try to cast the object to an array, a mapping, or a
multiset, in that order, which is then handled as described
above.
fun is applied in different ways depending on its type:
function
fun is called for each element. It gets the current
element as the first argument and extra as the rest. The
result of the call is collected.
object
fun is used as a function like above, i.e. the
lfun::`() method in it is called.
multiset
mapping
fun is indexed with each element. The result of that is
collected.
zero or left out
Each element that is callable is called with extra as
arguments. The result of the calls are collected. Elements
that aren't callable gets zero as result.
string
Each element is indexed with the given string. If the result
of that is zero then a zero is collected, otherwise it's
called with extra as arguments and the result of that
call is collected.
This is typically used when arr is a collection of
objects, and fun is the name of some function in them.