Skip to content

rnrs base

The (rnrs base (6)) library exports the procedures and syntactic forms described in the main section of the Report (see R6RS Base library in The Revised^6 Report on the Algorithmic Language Scheme). They are grouped below by the existing manual sections to which they correspond.

Scheme Procedure: boolean? obj

Scheme Procedure: not x

See Booleans, for documentation.

Scheme Procedure: symbol? obj

Scheme Procedure: symbol->string sym

Scheme Procedure: string->symbol str

See Operations Related to Symbols, for documentation.

Scheme Procedure: char? obj

Scheme Procedure: char=?

Scheme Procedure: char<?

Scheme Procedure: char>?

Scheme Procedure: char<=?

Scheme Procedure: char>=?

Scheme Procedure: integer->char n

Scheme Procedure: char->integer chr

See Characters, for documentation.

Scheme Procedure: list? x

Scheme Procedure: null? x

See List Predicates, for documentation.

Scheme Procedure: pair? x

Scheme Procedure: cons x y

Scheme Procedure: car pair

Scheme Procedure: cdr pair

Scheme Procedure: caar pair

Scheme Procedure: cadr pair

Scheme Procedure: cdar pair

Scheme Procedure: cddr pair

Scheme Procedure: caaar pair

Scheme Procedure: caadr pair

Scheme Procedure: cadar pair

Scheme Procedure: cdaar pair

Scheme Procedure: caddr pair

Scheme Procedure: cdadr pair

Scheme Procedure: cddar pair

Scheme Procedure: cdddr pair

Scheme Procedure: caaaar pair

Scheme Procedure: caaadr pair

Scheme Procedure: caadar pair

Scheme Procedure: cadaar pair

Scheme Procedure: cdaaar pair

Scheme Procedure: cddaar pair

Scheme Procedure: cdadar pair

Scheme Procedure: cdaadr pair

Scheme Procedure: cadadr pair

Scheme Procedure: caaddr pair

Scheme Procedure: caddar pair

Scheme Procedure: cadddr pair

Scheme Procedure: cdaddr pair

Scheme Procedure: cddadr pair

Scheme Procedure: cdddar pair

Scheme Procedure: cddddr pair

See Pairs, for documentation.

Scheme Procedure: number? obj

See Scheme’s Numerical “Tower”, for documentation.

Scheme Procedure: string? obj

See String Predicates, for documentation.

Scheme Procedure: procedure? obj

See Procedure Properties and Meta-information, for documentation.

Scheme Syntax: define name value

Scheme Syntax: set! variable-name value

See Defining and Setting Variables, for documentation.

Scheme Syntax: define-syntax keyword expression

Scheme Syntax: let-syntax ((keyword transformer) …) exp1 exp2 …

Scheme Syntax: letrec-syntax ((keyword transformer) …) exp1 exp2 …

See Defining Macros, for documentation.

Scheme Syntax: identifier-syntax exp

See Identifier Macros, for documentation.

Scheme Syntax: syntax-rules literals (pattern template) ...

See Syntax-rules Macros, for documentation.

Scheme Syntax: lambda formals body

See Lambda: Basic Procedure Creation, for documentation.

Scheme Syntax: let bindings body

Scheme Syntax: let* bindings body

Scheme Syntax: letrec bindings body

Scheme Syntax: letrec* bindings body

See Local Variable Bindings, for documentation.

Scheme Syntax: let-values bindings body

Scheme Syntax: let*-values bindings body

See SRFI-11 - let-values, for documentation.

Scheme Syntax: begin expr1 expr2 ...

See Sequencing and Splicing, for documentation.

Scheme Syntax: quote expr

Scheme Syntax: quasiquote expr

Scheme Syntax: unquote expr

Scheme Syntax: unquote-splicing expr

See Expression Syntax, for documentation.

Scheme Syntax: if test consequence [alternate]

Scheme Syntax: cond clause1 clause2 ...

Scheme Syntax: case key clause1 clause2 ...

See Simple Conditional Evaluation, for documentation.

Scheme Syntax: and expr ...

Scheme Syntax: or expr ...

See Conditional Evaluation of a Sequence of Expressions, for documentation.

Scheme Procedure: eq? x y

Scheme Procedure: eqv? x y

Scheme Procedure: equal? x y

Scheme Procedure: symbol=? symbol1 symbol2 ...

See Equality, for documentation.

symbol=? is identical to eq?.

Scheme Procedure: complex? z

See Complex Numbers, for documentation.

Scheme Procedure: real-part z

Scheme Procedure: imag-part z

Scheme Procedure: make-rectangular real_part imaginary_part

Scheme Procedure: make-polar x y

Scheme Procedure: magnitude z

Scheme Procedure: angle z

See Complex Number Operations, for documentation.

Scheme Procedure: sqrt z

Scheme Procedure: exp z

Scheme Procedure: expt z1 z2

Scheme Procedure: log z

Scheme Procedure: sin z

Scheme Procedure: cos z

Scheme Procedure: tan z

Scheme Procedure: asin z

Scheme Procedure: acos z

Scheme Procedure: atan z

See Scientific Functions, for documentation.

Scheme Procedure: real? x

Scheme Procedure: rational? x

Scheme Procedure: numerator x

Scheme Procedure: denominator x

Scheme Procedure: rationalize x eps

See Real and Rational Numbers, for documentation.

Scheme Procedure: exact? x

Scheme Procedure: inexact? x

Scheme Procedure: exact z

Scheme Procedure: inexact z

See Exact and Inexact Numbers, for documentation. The exact and inexact procedures are identical to the inexact->exact and exact->inexact procedures provided by Guile’s code library.

Scheme Procedure: integer? x

See Integers, for documentation.

Scheme Procedure: odd? n

Scheme Procedure: even? n

Scheme Procedure: gcd x ...

Scheme Procedure: lcm x ...

Scheme Procedure: exact-integer-sqrt k

See Operations on Integer Values, for documentation.

Scheme Procedure: =

Scheme Procedure: <

Scheme Procedure: >

Scheme Procedure: <=

Scheme Procedure: >=

Scheme Procedure: zero? x

Scheme Procedure: positive? x

Scheme Procedure: negative? x

See Comparison Predicates, for documentation.

Scheme Procedure: for-each f lst1 lst2 ...

See Fold, Unfold & Map, for documentation.

Scheme Procedure: list elem …

See List Constructors, for documentation.

Scheme Procedure: length lst

Scheme Procedure: list-ref lst k

Scheme Procedure: list-tail lst k

See List Selection, for documentation.

Scheme Procedure: append lst … obj

Scheme Procedure: append

Scheme Procedure: reverse lst

See Append and Reverse, for documentation.

Scheme Procedure: number->string n [radix]

Scheme Procedure: string->number str [radix]

See Converting Numbers To and From Strings, for documentation.

Scheme Procedure: string char ...

Scheme Procedure: make-string k [chr]

Scheme Procedure: list->string lst

See String Constructors, for documentation.

Scheme Procedure: string->list str [start [end]]

See List/String conversion, for documentation.

Scheme Procedure: string-length str

Scheme Procedure: string-ref str k

Scheme Procedure: string-copy str [start [end]]

Scheme Procedure: substring str start [end]

See String Selection, for documentation.

Scheme Procedure: string=? s1 s2 s3 …

Scheme Procedure: string<? s1 s2 s3 …

Scheme Procedure: string>? s1 s2 s3 …

Scheme Procedure: string<=? s1 s2 s3 …

Scheme Procedure: string>=? s1 s2 s3 …

See String Comparison, for documentation.

Scheme Procedure: string-append arg …

See Reversing and Appending Strings, for documentation.

Scheme Procedure: string-for-each proc s [start [end]]

See Mapping, Folding, and Unfolding, for documentation.

Scheme Procedure: + z1 ...

Scheme Procedure: - z1 z2 ...

Scheme Procedure: * z1 ...

Scheme Procedure: / z1 z2 ...

Scheme Procedure: max x1 x2 ...

Scheme Procedure: min x1 x2 ...

Scheme Procedure: abs x

Scheme Procedure: truncate x

Scheme Procedure: floor x

Scheme Procedure: ceiling x

Scheme Procedure: round x

See Arithmetic Functions, for documentation.

Scheme Procedure: div x y

Scheme Procedure: mod x y

Scheme Procedure: div-and-mod x y

These procedures accept two real numbers x and y, where the divisor y must be non-zero. div returns the integer q and mod returns the real number r such that x = q*y + r and 0 <= r < abs(y). div-and-mod returns both q and r, and is more efficient than computing each separately. Note that when y > 0, div returns floor(x/y), otherwise it returns ceiling(x/y).

emacs-lisp
(div 123 10) ⇒ 12
(mod 123 10) ⇒ 3
(div-and-mod 123 10) ⇒ 12 and 3
(div-and-mod 123 -10) ⇒ -12 and 3
(div-and-mod -123 10) ⇒ -13 and 7
(div-and-mod -123 -10) ⇒ 13 and 7
(div-and-mod -123.2 -63.5) ⇒ 2.0 and 3.8
(div-and-mod 16/3 -10/7) ⇒ -3 and 22/21

Scheme Procedure: div0 x y

Scheme Procedure: mod0 x y

Scheme Procedure: div0-and-mod0 x y

These procedures accept two real numbers x and y, where the divisor y must be non-zero. div0 returns the integer q and mod0 returns the real number r such that x = q*y + r and -abs(y/2) <= r < abs(y/2). div0-and-mod0 returns both q and r, and is more efficient than computing each separately.

Note that div0 returns x/y rounded to the nearest integer. When x/y lies exactly half-way between two integers, the tie is broken according to the sign of y. If y > 0, ties are rounded toward positive infinity, otherwise they are rounded toward negative infinity. This is a consequence of the requirement that -abs(y/2) <= r < abs(y/2).

emacs-lisp
(div0 123 10) ⇒ 12
(mod0 123 10) ⇒ 3
(div0-and-mod0 123 10) ⇒ 12 and 3
(div0-and-mod0 123 -10) ⇒ -12 and 3
(div0-and-mod0 -123 10) ⇒ -12 and -3
(div0-and-mod0 -123 -10) ⇒ 12 and -3
(div0-and-mod0 -123.2 -63.5) ⇒ 2.0 and 3.8
(div0-and-mod0 16/3 -10/7) ⇒ -4 and -8/21

Scheme Procedure: real-valued? obj

Scheme Procedure: rational-valued? obj

Scheme Procedure: integer-valued? obj

These procedures return #t if and only if their arguments can, respectively, be coerced to a real, rational, or integer value without a loss of numerical precision.

real-valued? will return #t for complex numbers whose imaginary parts are zero.

Scheme Procedure: nan? x

Scheme Procedure: infinite? x

Scheme Procedure: finite? x

nan? returns #t if x is a NaN value, #f otherwise. infinite? returns #t if x is an infinite value, #f otherwise. finite? returns #t if x is neither infinite nor a NaN value, otherwise it returns #f. Every real number satisfies exactly one of these predicates. An exception is raised if x is not real.

Scheme Syntax: assert expr

Raises an &assertion condition if expr evaluates to #f; otherwise evaluates to the value of expr.

Scheme Procedure: error who message irritant1 ...

Scheme Procedure: assertion-violation who message irritant1 ...

These procedures raise compound conditions based on their arguments: If who is not #f, the condition will include a &who condition whose who field is set to who; a &message condition will be included with a message field equal to message; an &irritants condition will be included with its irritants list given by irritant1 ....

error produces a compound condition with the simple conditions described above, as well as an &error condition; assertion-violation produces one that includes an &assertion condition.

Scheme Procedure: vector-map proc v

Scheme Procedure: vector-for-each proc v

These procedures implement the map and for-each contracts over vectors.

Scheme Procedure: vector arg …

Scheme Procedure: vector? obj

Scheme Procedure: make-vector len

Scheme Procedure: make-vector len fill

Scheme Procedure: list->vector l

Scheme Procedure: vector->list v

See Dynamic Vector Creation and Validation, for documentation.

Scheme Procedure: vector-length vector

Scheme Procedure: vector-ref vector k

Scheme Procedure: vector-set! vector k obj

Scheme Procedure: vector-fill! v fill

See Accessing and Modifying Vector Contents, for documentation.

Scheme Procedure: call-with-current-continuation proc

Scheme Procedure: call/cc proc

See Continuations, for documentation.

Scheme Procedure: values arg …

Scheme Procedure: call-with-values producer consumer

See Returning and Accepting Multiple Values, for documentation.

Scheme Procedure: dynamic-wind in_guard thunk out_guard

See Dynamic Wind, for documentation.

Scheme Procedure: apply proc arg … arglst

See Procedures for On the Fly Evaluation, for documentation.