I went ahead and implemented the textbook version of Tarjan\'s SCC algorithm in Scala. However, I dislike the code - it is very imperative/procedural with lots of mutating state
Have a look at https://github.com/jordanlewis/data.union-find, a Clojure implementation of the algorithm. It's sorta disguised as a data structure, but the algorithm is all there. And it's purely functional, of course.