`(\n b. n a) (\a. \n b. n a) b ~~>`
`(\b. (\a. \n b. n a) a) b ~~>`
`(\b. (\n b. n a)) b ~~>`
-`(\n b. n a)` ≡
+`(\n b. n a) <~~>`
`m a`
Looks good. So `f` needs to be a function that accepts an argument `w` (after the first stage, this will be `m a`), and an argument `b`, and applies `w` to `m` and to `b`. In other words, `f` should be: