diff --git a/Examples.md b/Examples.md
index 07d2985..09622f2 100644
--- a/Examples.md
+++ b/Examples.md
@@ -1283,11 +1283,62 @@ fn main
```
+fn is_odd(n: u32) -> bool {
+ n % 2 == 1
+}
+fn main() {
+ let upper = 1000;
+
+ // Imperative approach
+ let mut acc = 0;
+ for n in 0.. {
+ let n_squared = n * n;
+
+ if n_squared >= upper {
+ break;
+ } else if is_odd(n_squared) {
+ acc += n_squared;
+ }
+ }
+ println!("imperative style: {}", acc);
+
+ // Functional approach
+ let sum_of_squared_odd_numbers: u32 =
+ (0..).map(|n| n * n)
+ .take_while(|&n_squared| n_squared < upper)
+ .filter(|&n_squared| is_odd(n_squared))
+ .sum();
+ println!("functional style: {}", sum_of_squared_odd_numbers);
+}
```
|
```
+// The below will actually make a closure that captures nothing, not a function as on the left; do we care?
+let is_odd = $ % 2 == 1
+
+fn main
+ let upper = 1000
+
+ // Imperative approach
+ let mut acc = 0
+ for n in 0..
+ let n_squared = n * n
+
+ if n_squared >= upper then break
+ else if is_odd n_squared
+ acc += n_squared
+
+ println! "imperative style: {}", acc
+
+ // Functional approach
+ let sum_of_squared_odd_numbers: u32 =
+ (0..).map $ * $
+ .take_while $ < &upper
+ .filter is_odd *$
+ .sum()
+ println! "functional style: {}", sum_of_squared_odd_numbers
```
|