Level Up on Functional Programming by Rebuilding LINQ