## Implemented SRFIs

Kawa implements the following semi-standard SRFIs (Scheme Request for Implementation):

- SRFI 0: Feature-based conditional expansion construct, using `cond-expand` - see Syntax and conditional compilation.

- SRFI 1: List Library, if `(require 'list-lib)` - see SRFI-1.

- SRFI 2: AND-LET*: an AND with local bindings, a guarded LET* special form.

- SRFI 4: Homogeneous numeric vector datatypes - see Uniform vectors.

- SRFI 6: Basic String Ports - see Ports.

- SRFI 8: `receive`: Binding to multiple values - see Multiple values.

- SRFI 9: Defining Record Types, using `define-record-type` - see Record types.

- SRFI 10: `#,` external form for special named types. This is deprecated for various reasons, including that it conflicts with syntax-case `unsyntax`. Better to use srfi-108 Named quasi-literals.

- SRFI 11: Syntax for receiving multiple values, using `let-values` and `let*-value` - see Multiple values.

- SRFI 13: String Library. Needs some polishing.

- SRFI 14: Character-set Library - see Character sets.

- SRFI 16: Syntax for procedures of variable arity, using `case-lambda`.

- SRFI 17: Generalized `set!` - see Locations.

- SRFI 23: Error reporting mechanism, using `error` - see Exceptions.

- SRFI 25: Multi-dimensional Array Primitives - see Arrays.

- SRFI 26: Notation for Specializing Parameters without Currying - see Procedures.

- SRFI 28: Basic Format Strings - see Format.

- SRFI 30: Nested Multi-line Comments.

- SRFI 35: Conditions.

- SRFI 37: `args-fold` - a program argument processor, if `(require 'args-fold)`.

- SRFI 38: External Representation for Data With Shared Structure. The `read-with-shared-structure` is missing, but subsumed by `read`.

- SRFI 39: See Parameter objects.

- SRFI 41: Streams - see Streams.

- SRFI 45: Primitives for Expressing Iterative Lazy Algorithms - see Lazy evaluation.

- SRFI 60: Integers as Bits. - see Logical Number Operations.

- SRFI 62: S-expression comments.

- SRFI 64: A Scheme API for test suites.

- SRFI 69: Basic hash tables - see Hash tables.

- SRFI 87: `=>` in `case` clauses.

- SRFI 88: Keyword objects - see Keywords.

- SRFI 95: Sorting and Merging.

- SRFI 97: Names for SRFI Libraries.

- SRFI 98: An interface to access environment variables

- SRFI 101: Purely Functional Random-Access Pairs and Lists - see SRFI-101.

- SRFI 107: XML reader syntax - see XML literals.

- SRFI 108: Named quasi-literal constructors - see Named quasi-literals.

- SRFI-109: Extended string quasi-literals - see string quasi-literals.

- SRFI-118: Simple adjustable-size strings (`string-append!` and `string-replace!`).