This project demonstrates the use of object algebras or tagless final in Scala, java and Haskell.
The OO Java code and FP Haskell code is taken from the snippets in Oleksandr Manzyuk's blog post: "From Object Algebras to Finally Tagless Interpreters"
I also ported both approaches - OO/Java and FP/Haskell - to Scala.
The blog is a great intro to the subject, the clearest one I found on the web. I heavily recommend to read it if you are not yet familiar with the subject.
Hermann