IO[L, R] combines Scala's Try[T] and Either[L, R] into a single implementation that adds type-safety to Exceptions.