MyNixOS website logo
Description

Casting Values into Shape.

Helper functions with a consistent interface to coerce and verify the types and shapes of values for input checking.

Travis buildstatus Coveragestatus AppVeyorbuildstatus

forge

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.

Installation

You can install forge from CRAN with

install.packages("forge")

You can install the development version from GitHub with

devtools::install_github("rstudio/forge")

Examples

Here we demonstrate forge with a trivial function:

#' @import forge
fib <- function(n) {
  n <- cast_scalar_integer(n, return_id = TRUE) %>%
    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():

some_vec <- 1:5
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.

Metadata

Version

0.2.0

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows