Skip to content

Map ​

The collection where each element has been transformed by ff; with several collections, combines them element-wise (like zip), to the length of the shortest.

✓ checked against that system · ! checked, with disagreements (hover a chip)Fungrim entryWolfram LanguageMap!
Map(f, xs)[f(x1),f(x2),…][f(x_1), f(x_2), \ldots] — ff applied to each element of xsxs.
Map(f, xs, ys, …)combines several collections element-wise (like zip), to the length of the shortest — [f(x1,y1),f(x2,y2),…][f(x_1, y_1), f(x_2, y_2), \ldots].
Map(f)the operator form, Map(f)(xs)=Map(f,xs)\mathrm{Map}(f)(xs) = \mathrm{Map}(f, xs).
Typed signatures
TypePackageApplies
(any) -> anycombinatoricsreplaces compute-enginealways
(mapping: (T) any -> U, collection<T>+) -> indexed_collection where T, Ucompute-enginealways

Domain: Collections

Details
  • The mapping function is always the first argument, opposite Fold/Scan.
  • With one collection, equivalent to [f(x) for x in xs]; with several, zipWith.

Examples

Basic #

Map Square over [1,2,3,4][1,2,3,4]

live ↗
InMap(Square,[1,2,3,4])\mathrm{Map}(\mathrm{Square}, \bigl\lbrack1, 2, 3, 4\bigr\rbrack)Out[1,4,9,16]\bigl\lbrack1, 4, 9, 16\bigr\rbrack

Map a lambda adding 1 to each element

live ↗
InMap(()↦_⁡+1,[1,2,3])\mathrm{Map}(()↦\operatorname{\_}+1, \bigl\lbrack1, 2, 3\bigr\rbrack)Out[2,3,4]\bigl\lbrack2, 3, 4\bigr\rbrack

Map Add over two collections zips them

live ↗
InMap(Add,[1,2,3],[10,20,30])\mathrm{Map}(\mathrm{Add}, \bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack10, 20, 30\bigr\rbrack)Out[11,22,33]\bigl\lbrack11, 22, 33\bigr\rbrack

Map a pure function over a list

live ↗
InMap(x↦x2,[1,2,3,4])\mathrm{Map}(x↦x^2, \bigl\lbrack1, 2, 3, 4\bigr\rbrack)Out[1,4,9,16]\bigl\lbrack1, 4, 9, 16\bigr\rbrack
live ↗
InMap(f,[a,b,c,d,k])\mathrm{Map}(f, \bigl\lbrack a, b, c, d, k\bigr\rbrack)Out[f(a),f(b),f(c),f(d),f(k)]\bigl\lbrack f(a), f(b), f(c), f(d), f(k)\bigr\rbrack
live ↗
InMap(f,[[a,b],[c,d,k]])\mathrm{Map}(f, \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack\bigr\rbrack)Out[f([a,b]),f([c,d,k])]\bigl\lbrack f(\bigl\lbrack a, b\bigr\rbrack), f(\bigl\lbrack c, d, k\bigr\rbrack)\bigr\rbrack
live ↗
InMap(f,[[a,b],[c,d,k]],[2])\mathrm{Map}(f, \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack\bigr\rbrack, \bigl\lbrack2\bigr\rbrack)Out[f([a,b],2)]\bigl\lbrack f(\bigl\lbrack a, b\bigr\rbrack, 2)\bigr\rbrack
live ↗
InMap(f)⊲[a,b,c,d]\mathrm{Map}(f)\lhd\bigl\lbrack a, b, c, d\bigr\rbrackOut[f(a),f(b),f(c),f(d)]\bigl\lbrack f(a), f(b), f(c), f(d)\bigr\rbrack
Scope #

Maps only the first level, so deeper nesting is left intact

live ↗
InMap(f,[[[[[a]]]]])\mathrm{Map}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack)Out[f([[[[a]]]])]\bigl\lbrack f(\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack)\bigr\rbrack

A symbolic head wraps each element

live ↗
InMap(f,[a,b,c])\mathrm{Map}(f, \bigl\lbrack a, b, c\bigr\rbrack)Out[f(a),f(b),f(c)]\bigl\lbrack f(a), f(b), f(c)\bigr\rbrack

Extra lists supply further arguments, giving f(x,2)f(x, 2) on the single element

live ↗
InMap(f,[[[[[a]]]]],[2])\mathrm{Map}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack2\bigr\rbrack)Out[f([[[[a]]]],2)]\bigl\lbrack f(\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, 2)\bigr\rbrack
live ↗
InMap(f,[[[[[a]]]]],[0,2])\mathrm{Map}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack0, 2\bigr\rbrack)Out[f([[[[a]]]],0)]\bigl\lbrack f(\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, 0)\bigr\rbrack
live ↗
InMap(f,[[[[[a]]]]],[0,∞])\mathrm{Map}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack0, ∞\bigr\rbrack)Out[f([[[[a]]]],0)]\bigl\lbrack f(\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, 0)\bigr\rbrack
live ↗
InMap(f,[[[[[a]]]]],[2,−3])\mathrm{Map}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack2, -3\bigr\rbrack)Out[f([[[[a]]]],2)]\bigl\lbrack f(\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, 2)\bigr\rbrack
Applications #
live ↗
InMap(_1⁡↦_1⁡+[x,y],[[1,1],[2,2],[3,3],[4,4]])\mathrm{Map}(\operatorname{\_1}↦\operatorname{\_1}+\bigl\lbrack x, y\bigr\rbrack, \bigl\lbrack\bigl\lbrack1, 1\bigr\rbrack, \bigl\lbrack2, 2\bigr\rbrack, \bigl\lbrack3, 3\bigr\rbrack, \bigl\lbrack4, 4\bigr\rbrack\bigr\rbrack)Out[[x+1,y+1],[x+2,y+2],[x+3,y+3],[x+4,y+4]]\bigl\lbrack\bigl\lbrack x+1, y+1\bigr\rbrack, \bigl\lbrack x+2, y+2\bigr\rbrack, \bigl\lbrack x+3, y+3\bigr\rbrack, \bigl\lbrack x+4, y+4\bigr\rbrack\bigr\rbrack
live ↗
InMap(Reverse,[[a,b],[c,d],[k,f]])\mathrm{Map}(\mathrm{Reverse}, \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d\bigr\rbrack, \bigl\lbrack k, f\bigr\rbrack\bigr\rbrack)Out[[b,a],[d,c],[f,k]]\bigl\lbrack\bigl\lbrack b, a\bigr\rbrack, \bigl\lbrack d, c\bigr\rbrack, \bigl\lbrack f, k\bigr\rbrack\bigr\rbrack
Properties #

Mapping over an empty collection returns empty

live ↗
InMap(Square,[])\mathrm{Map}(\mathrm{Square}, \bigl\lbrack\bigr\rbrack)Out[]\bigl\lbrack\bigr\rbrack

An exact square root stays exact where possible

live ↗
InMap(Sqrt,[1,2,3,4])\mathrm{Map}(\mathrm{Sqrt}, \bigl\lbrack1, 2, 3, 4\bigr\rbrack)Out[1,2,3,2]\bigl\lbrack1, \sqrt{2}, \sqrt{3}, 2\bigr\rbrack

Symbolic elements are wrapped, not evaluated

live ↗
InMap(f,[x,y,z])\mathrm{Map}(f, \bigl\lbrack x, y, z\bigr\rbrack)Out[f(x),f(y),f(z)]\bigl\lbrack f(x), f(y), f(z)\bigr\rbrack
live ↗
InMap(f,[[a,b],[c],[[d]]],[0,∞])\mathrm{Map}(f, \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c\bigr\rbrack, \bigl\lbrack\bigl\lbrack d\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack0, ∞\bigr\rbrack)Out[f([a,b],0),f([c],∞)]\bigl\lbrack f(\bigl\lbrack a, b\bigr\rbrack, 0), f(\bigl\lbrack c\bigr\rbrack, ∞)\bigr\rbrack
About
Examples20
Checked againstWolfram Language 13 agree5 differmathlib4 2 agree
CrosswalkFungrim entry ×18Wolfram Language

Implementation

mappedmathlib4packages/oracle/src/mappings.ts

One list, the function applied to each element as a ℚ (a ℕ or ℤ where its body needs one). A function whose body has no mathlib4 binding, or a list of another element type, is not emitted.

See also: Tabulate, Fold, Filter