Maybe you shouldn't link to the edit URL for your posts.<p>But on the topic, your example relies too much on pokemon code. What if you have multiple exceptions at different stage of your pipeline? What if two stages can produce the same exception type, and it's important to know which one produced it? What if you need to roll back in the event of an exception, and <i>where</i> the exception took place is important to doing this?<p>With imperative code, this is tricky. With function composition as presented in your post, it's a nightmare.<p>The imperative code may not be as elegant as the 'functional' solution, but in the long run, it's easier to maintain.