One of the things I enjoyed when discovering for the first time functional programming, was how it reveals patterns that traditional imperative programming hides. I was delighted to discover how implementing Breadth-First Search with the sort of restrictions we expect from functional programming, also reveals hidden patterns.
Another surprise is that F# is a great candidate to explore functional data structures, which seem could be a good update to the excellent work by Chris Okasaki