When scala.util.Try first came out, there was a lot of discussions about the validity of it's implementation. Some discussions got distracted with issues beyond the facts. Ultimately, the issue came down to the following:
-
Is Try a monad?
-
Does referential transparency (RT) apply in the presence of possible non-terminating or errant functions -- those returning ⊥?
Not requiring Try to be a monad is an easy solution to the whole problem. If