 Infinite root problems are typically pretty easy to solve, and this was no exception at all. So now, we're going to show off how one function can be passed into another function. This is a functor, and is the defining feature of higher-order functions, one of the most important parts of functional programming. The entire loop that we had written before is gone. Now, I needed to change these slightly just because I only have one definition of where right now, and it requires a function that accepts a node as a parameter, not the instantiated value type. I'll probably add one for the value type as well, just for convenience, but the one that operates on the node is the most powerful, just because it can also check other things about the node in entirety. Most people who use this are probably going to want to operate on the value type though. But, this isn't really about containers, this is about higher-order functions. If you didn't watch the first one, I wanted to do a real quick crash course. I have a list of 1, 2, 3, 4, 5, and I want to create another list of just the even values, using a functional approach. So here, we're taking the result list and assigning it to all the values in the original list, where, and then we're passing it, in this case, a named variable whose value is actually a function. And this function just simply does a check of the value of the node against the set of evens. So this should, assuming it works correctly, return another list of just even values within the original list. So, looking at the original list, it should be 2 and 4. And now I've already built this, and you can see returns 2 and 4. Now, do you have to go with the named value? No. Because of Addis type safety, you do have to make one little consideration, and that's just calling the access attribute on the function. But this will also work. That's it. So as you can see, Addis clearly supports higher-order functions, one of the most important parts of functional programming.