Most of the functional programming-related math is very simple, especially when framing it/contextualizing it to programming (e.g. using data types instead of sets, interfaces instead of "algebras", etc).
There's two minor gotchas:
- functional programming's math is mostly rooted in algebra and category theory, whereas most math education from elementary through university focuses on analysis and calculus
- it is still math after all, and you're required to go step-by-step building definitions in a mathematical fashion. If you want to understand what a monad is, you need to understand what a functor is. To understand what a functor is, you need to understand what a type constructor (such as Array, List, Record or Option) and a map function are.
If you're interested, I have a (now archived) repository that explains the fundamentals of functional programming through TypeScript and fp-ts library, and it does so in a very strict mathematical, but very approachable regardless of education, fashion.
You could check the magma and semigroup paragraphs, they are short, to get a taste of it.
Obviously, it's math, so you're expected to learn those definitions (albeit they are very simple to understand and easy to remember) and practice it a bit by thinking/implementing a handful of magmas and semigroups, then moving on to concepts that build upon those (monoid, ordering, functor, etc) by adding more constraints.
It's not read and move to the next chapter.
https://github.com/enricopolanski/functional-programming