- 1. Reduce head ((map2 +) ⇧1)
- 2. Reduce arg (((map2 *) (((map2 /) ⇧6) ⇧2)) ⇧3)
- 1. Reduce head ((map2 *) (((map2 /) ⇧6) ⇧2))
- 1. Reduce head *
- 2. Reduce arg (((map2 /) ⇧6) ⇧0)
- 1. Reduce head ((map2 /) ⇧6)
- 2. Reduce arg ⇧0
- 3. Reduce (((map2 /) ⇧6) ⇧0) to Nothing
- 3. Reduce ((map2 *) Nothing) to Nothing
- 2. Reduce arg ⇧4
- 3. Reduce (((map2 *) Nothing) ⇧4) to Nothing
- 3. Reduce (((map2 +) ⇧1) Nothing) to Nothing
-
-As soon as we try to divide by 0, safe-div returns Nothing.
-Thanks to the details of map2, the fact that Nothing has been returned
-by one of the arguments of a map2-ed operator guarantees that the
-map2-ed operator will pass on the Nothing as its result. So the
-result of each enclosing computation will be Nothing, up to the root
+> 1. Reduce head `((map2 +) ⇧1)`
+> 2. Reduce arg `(((map2 *) ((safe_div ⇧6) ⇧0)) ⇧4)`
+> 1. Reduce head `((map2 *) ((safe_div ⇧6) ⇧0))`
+> 1. Reduce head `(map2 *)`
+> 2. Reduce arg `((safe_div ⇧6) ⇧0)`
+> 1. Reduce head `(safe_div ⇧6)`
+> 2. Reduce arg `⇧0`
+> 3. Reduce `((safe_div ⇧6) ⇧0)` to `None`
+> 3. Reduce `((map2 *) None)`
+> 2. Reduce arg `⇧4`
+> 3. Reduce `(((map2 *) None) ⇧4)` to `None`
+> 3. Reduce `(((map2 +) ⇧1) None)` to `None`
+
+As soon as we try to divide by `0`, `safe_div` returns `None`.
+Thanks to the details of `map2`, the fact that `None` has been returned
+by one of the arguments of a `map2`-ed operator guarantees that the
+`map2`-ed operator will pass on the `None` as its result. So the
+result of each enclosing computation will be `None`, up to the root