Any combined FP / non-FP algorithim treatsie for Scala?


I’m preparing for a programming interviews. The roles are not only Scala. What I’ve found in previous problems is we sometimes see the canned non FP problems that don’t always lend themselves quickly to FP solutions.

I’m looking for a treatsie that breaks down the problems and shares analysis of algorithms using FP and non-FP approaches. Are there any good combined resources?

The Okasaki book ( ) discussing functional data structures I think goes into some depth comparing algorithms and approaches in FP vs non-FP.

Nothing is coming to mind regarding more general algorithms. Do you have any specific examples you are thinking about?

Brian Maso

1 Like

Hi Brian,

Yes I think that book is an excellent example of the sort of material I’m looking for. But it’s written for Haskell / ML vs Scala. Then it takes that much more time & effort working with a book from another language. One way I could approach this is with a book like that and another book with non FP implementations to compare…

There isn’t a specific problem I’m thinking about. I think what’s reasonable to prepare is to just study and practice this type of thinking and these types of problems. Often I think those conducting the interviews aren’t expecting scala for comprehension syntax or immutable collections.

Sometimes I find the signatures for some of the mutable scala collections to be cumbersome, compared to their immutable counterparts, or to other less functional languages.

Do you happen to know something comparable to PFDS written for Scala? I had worked through some of the scala mooc course and although I felt like they were excellent, I think a text like PFDS is more relevant to what I’m searching for.


1 Like

Thanks for the references. These look helpful but I still feel it would be beneficial to read the text. Then I’m probably just going to learn haskell and work through the text.

Tried to learn Haskell myself. Maybe this is also of interest:

Yes I recall hearing about that text. Seems like a good way to get started…