Functional Programming in C#: Classic Programming Techniques for Modern Projects