This looks like what we had before, except that now we have this free variable `y` in our lambda expression. Perhaps we can bind that variable inside a *larger* lambda expression, and then map (and filter) *that* larger lambda expression over the list that `y` is drawn from:
- map (lambda y. map (lambda x. 10*x + y) [1, 2, 3]) $ filter (lambda y. y < 6) [4, 5, 6]
+ let
+ f match lambda y. map (lambda x. 10*x + y) [1, 2, 3]
+ in map f $ filter (lambda y. y < 6) [4, 5, 6]
This gives us nearly what we want. It evaluates to: