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.