Protect Function Evaluations
Ensures non-failure and possibly finite-ness of a function evaluation.
protect(f, fail.value.default=NULL) invert(f)
| f | A function. | 
| fail.value.default | Value that will be used as on failure of
 | 
protect returns a function with arguments
g(..., fail.value=fail.value.default, finite=NULL)
The ... arguments are all passed through to the underlying
function f, fail.value contains the value to return in
the event of a failure (e.g., an error occuring).  If finite is
TRUE, then fail.value is also returned where the value
is NA, NaN or infinite.
No check is made that f returns a single value, but it should.
Richard G. FitzJohn
f <- function(x) log(x)
g <- protect(f)
f(0) # -Inf
g(0, fail.value=-999) # -999
f <- function(x) {
  if ( x < 1 )
    stop("dummmy error")
  x
}
g <- protect(f)
## Not run: 
f(0) # error
## End(Not run)
g(0, fail.value=-999) # -999Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.