Today I had the opportunity to write some interesting code. We needed to, essentially, insert a hack into our system wherein one style of request had a slightly different style of processing.
So this is in Go. Functions are first-class objects.
I have a system that does things in parallel. Those things are specified by a pointer to a function. And now I needed to slightly fork a couple of those.
The function, let’s call it DoStuff takes a slice of functions.
So I made another function, mutate, that takes one of the original functions, and wraps it in a closure.
Then it goes on in its life as before.
Thinking of functions as objects is such a cool thing.
It can be tricky if you’re not expecting it.
But it also shows off how a good design can be modified in interesting ways.