Guide: PLT Scheme

1`` | Welcome to PLT Scheme
2`` | Scheme Essentials
3`` | Built-In Datatypes
4`` | Expressions and Definitions
5`` | Programmer-Defined Datatypes
6`` | Modules
7`` | Contracts
8`` | Input and Output
9`` | Regular Expressions
10`` | Exceptions and Control
11`` | Iterations and Comprehensions
12`` | Pattern Matching
13`` | Classes and Objects
14`` | Units (Components)
15`` | Reflection and Dynamic Evaluation
16`` | Macros
17`` | Performance
18`` | Running and Creating Executables
19`` | Compilation and Configuration
20`` | More Libraries
| Bibliography
| Index

Version: 4.0.2
contents index
← prev up next →

#### 3.9`` Vectors

A vector is a fixed-length array of arbitrary values. Unlike a list, a vector supports constant-time access and update of its elements.

A vector prints similar to a list – as a parenthesized sequence of its elements – but a vector is prefixed with #. For a vector as an expression, an optional length can be supplied. Also, a vector as an expression implicitly quotes the forms for its content, which means that identifiers and parenthesized forms in a vector constant represent symbols and lists.

Reading Vectors in Reference: PLT Scheme documents the fine points of the syntax of vectors.

Examples:
> #("a" "b" "c")
#("a" "b" "c")
> #(name (that tune))
#(name (that tune))
> (vector-ref #("a" "b" "c") 1)
"b"
> (vector-ref #(name (that tune)) 1)
(that tune)

Like strings, a vector is either mutable or immutable, and vectors written directly as expressions are immutable.

Vector can be converted to lists and vice-versa via list->vector and vector->list; such conversions are particularly useful in combination with predefined procedures on lists. When allocating extra lists seems too expensive, use consider using looping forms like fold-for, which recognize vectors as well as lists.

Examples:

> (list->vector (map string-titlecase
(vector->list #("three" "blind" "mice"))))

#("Three" "Blind" "Mice")

Vectors in Reference: PLT Scheme provides more on vectors and vector procedures.

contents index
← prev up next →