aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/doc
diff options
context:
space:
mode:
authorFredrik Gustafsson <[email protected]>2013-05-02 11:09:24 +0200
committerFredrik Gustafsson <[email protected]>2013-05-02 11:09:24 +0200
commitf7c5df146f027d0dbcbcc0e41f39343b74cedfd2 (patch)
treeb1fc855d5767b32ae50c5a592bb5993d4c63f0e6 /lib/stdlib/doc
parentcd14a151051567cc19dfa3677799612366060801 (diff)
parent3ac04f901ecfb3fed128759964ccc54fa4ee7b2a (diff)
downloadotp-f7c5df146f027d0dbcbcc0e41f39343b74cedfd2.tar.gz
otp-f7c5df146f027d0dbcbcc0e41f39343b74cedfd2.tar.bz2
otp-f7c5df146f027d0dbcbcc0e41f39343b74cedfd2.zip
Merge branch 'nox/lists-filtermap/OTP-11078' into maint
* nox/lists-filtermap/OTP-11078: Rename and document lists:zf/2 as lists:filtermap/2
Diffstat (limited to 'lib/stdlib/doc')
-rw-r--r--lib/stdlib/doc/src/lists.xml25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/stdlib/doc/src/lists.xml b/lib/stdlib/doc/src/lists.xml
index b6c0fa4e05..1aff78f4fc 100644
--- a/lib/stdlib/doc/src/lists.xml
+++ b/lib/stdlib/doc/src/lists.xml
@@ -152,6 +152,31 @@
</desc>
</func>
<func>
+ <name name="filtermap" arity="2"/>
+ <fsummary>Filter and map elements which satisfy a function</fsummary>
+ <desc>
+ <p>Calls <c><anno>Fun</anno>(<anno>Elem</anno>)</c> on successive elements <c>Elem</c>
+ of <c><anno>List1</anno></c>. <c><anno>Fun</anno>/2</c> must return either a boolean
+ or a tuple <c>{true, <anno>Value</anno>}</c>. The function returns the list of elements
+ for which <c><anno>Fun</anno></c> returns a new value, where a value of <c>true</c>
+ is synonymous with <c>{true, <anno>Elem</anno>}</c>.</p>
+ <p>That is, <c>filtermap</c> behaves as if it had been defined as follows:</p>
+ <code type="none">
+filtermap(Fun, List1) ->
+ lists:foldr(fun(Elem, Acc) ->
+ case Fun(Elem) of
+ false -> Acc;
+ true -> [Elem|Acc];
+ {true,Value} -> [Value|Acc]
+ end,
+ end, [], List1).</code>
+ <p>Example:</p>
+ <pre>
+> <input>lists:filtermap(fun(X) -> case X rem 2 of 0 -> {true, X div 2}; _ -> false end end, [1,2,3,4,5]).</input>
+[1,2]</pre>
+ </desc>
+ </func>
+ <func>
<name name="flatlength" arity="1"/>
<fsummary>Length of flattened deep list</fsummary>
<desc>