Functional programming avoids side effects (change of state). Compare that to imperative style programming, like in ABAP, where usually state can be changed by commands/statements e.g. for I/O, database operations, global variables, buffering etc. Stateful programming is a major cause of bugs in software programs. It introduces complexity, uncertainty and affects readability of code that in turn causes bugs during initial development and even more during maintenance. While I found the idea behind functional programming quite fascinating and clearly beneficial too, how to achieve something substantial in an industrial programming environment was an equally intriguing question.