👉 In functional programming, a monad is an abstraction of a computation that takes in data and returns another computation. Monads allow for efficient handling of computations by encapsulating the state and action aspects of the computation into a single unit. This allows for more concise and readable code, as well as easier debugging and testing. Monads are often used to represent computations that take in input arguments (data) and produce output results (computation).