This document outlines key principles and tools of functional programming (FP), emphasizing the use of functions as standalone entities that can transform inputs to outputs through composition. It introduces the functional toolkit, which includes concepts like map, bind, and lift, alongside techniques for handling effects and error management using a railway-oriented programming approach. Additionally, it illustrates how to manage different data types and interactions with external systems, highlighting the importance of reusability and composition in building scalable applications.