@@ -169,8 +169,8 @@ First of all, we'll revert to our original definitions of `remove-a` and
(nothing)))
```
-What if tried introducing higher-order procedures (procedures that accept other
-procedures as arguments) into the equation? Because we're functional
+What if we tried introducing higher-order procedures (procedures that accept
+other procedures as arguments) into the equation? Because we're functional
programmers and we have an unhealthy obsession with that sort of thing.
```scheme
@@ -320,8 +320,8 @@ expressions to symbols, and are essentially equivalent to a chain of
;; This is equivalent...
(mlet* %maybe-monad ((str -> "abad") ;non-monadic binding uses the -> symbol
(str1 (remove-a str))
- (str2 (remove-b str)))
- (remove-a str))
+ (str2 (remove-b str1)))
+ (remove-a str2))
⇒ #<<maybe> is?: #t value: "d">
;; ...to this:
@@ -330,9 +330,9 @@ expressions to symbols, and are essentially equivalent to a chain of
(lambda (str)
(remove-a str))
(lambda (str1)
- (remove-b str))
+ (remove-b str1))
(lambda (str2)
- (remove-a str))))
+ (remove-a str2))))
```
Various abstractions over these two exist too, such as `mwhen` (a `when` plus an