The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
forge provides functions for input checking and
casting. It is intended to be used by package developers, especially for
interoperating with other runtimes, such as Python and JVM languages. It
contains two families of functions, cast_*
and
certify()
. The former casts a value to a specific type,
while the latter ensures certain conditions are met.
You can install forge from CRAN with
install.packages("forge")
You can install the development version from GitHub with
::install_github("rstudio/forge") devtools
Here we demonstrate forge with a trivial function:
#' @import forge
<- function(n) {
fib <- cast_scalar_integer(n, return_id = TRUE) %>%
n certify(gte(0))
if (n <= 2) {
if( n >= 0) 1 else 0
else {
} Recall(n - 1) + Recall(n - 2)
}
}fib(10)
#> [1] 55
fib(1.5)
#> Error: `n` cannot be casted to an integer vector.
fib(-2)
#> Error: Condition `gte(0)` not satisfied for `n`.
We can also provide arbitrary conditions to
certify()
:
<- 1:5
some_vec certify(some_vec, ~ any(.x < 2))
#> [1] 1 2 3 4 5
certify(some_vec, ~ mean(.x) > 2)
#> [1] 1 2 3 4 5
certify(some_vec, ~ all(.x <= 5), ~ mean(.x) > 3)
#> Error: Condition `~mean(.x) > 3` not satisfied for `some_vec`.
Please note that the ‘forge’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.