On Fri, October 25, 2013 3:36 pm, Michiel Helvensteijn wrote: > On Sat, Oct 26, 2013 at 12:28 AM, Michiel Helvensteijn > <[log in to unmask]> wrote: > >>> "map" ("mapping") is the usual term. >> >> I think "map" is taken. Though it beats me why "map" isn't actually >> called "foreach", or somesuch. :-) > > Correction, I'm pretty sure I know why the name was chosen: > > http://en.wikipedia.org/wiki/Map_(higher-order_function) > > But the functional programming concept doesn't really fit the expl3 > concept, except for token lists. I'm not sure if the expl3 "map" is a straight "foreach" or a list accumulator. There are several "*map*" definitions in expl3 internals. The one you mean, Does it convert a list of x,y,z to a list of f(x),f(y),f(z)? If so, it is a proper mapping operation. Or does it just spit out f(x), f(y), and f(z) in turn? Then it should just be "foreach". Even in the case of the list accumulator, the function result has to be fully determined by the input argument item for it to be a true map. Functional programmers don't list this requirement because it is the basic assumption underlying functional programming. Conversely, TeX has no good way to enforce that rule should the user want to accumulate sums or similar. I wouldn't worry too much about that, but it could make the "map" name confusing in some circumstances. The character-token mapping implemented by misusing \uppercase or \lowercase should probably be called charmap (or map_char). I can't say if one or more of the other mapping macros should be renamed "foreach". Even if it is a real map, the name "mapeach" will help reduce confusion. Donald Arseneau, TRIUMF CMMS, [log in to unmask]