diff --git a/snippets/when.md b/snippets/when.md new file mode 100644 index 000000000..e45fac3b1 --- /dev/null +++ b/snippets/when.md @@ -0,0 +1,19 @@ +--- +title: when +tags: function,intermediate +--- + +Tests a value, `x`, against a `predicate` function, conditionally applying a function. + +Check if the value of `predicate(x)` is `True` and if so return `when_true(x)`, otherwise return `x`. + +```py +def when(predicate, when_true): + return lambda x: when_true(x) if predicate(x) else x +``` + +```py +double_even_numbers = when(lambda x: x % 2 == 0, lambda x : x * 2) +double_even_numbers(2) # 4 +double_even_numbers(1) # 1 +```