"Wrapping mutable Java stuff in Frege means that everything will end up in an ST monad, which is almost always IO. That means that using Java’s HashSet will force anything that uses that to be in the IO monad itself. So there goes purity and referential transparency, which are some of the best parts of Haskell in the first place."
[0] https://www.reddit.com/r/haskell/comments/3gr7y6/infoq_frege...
[1] http://taylor.fausak.me/2015/06/25/frege-a-jvm-haskell/
EDIT: formatting