Explore the role of type systems in functional programming and how they contribute to code reliability.