Growing Schemes

Twenty Years of Scheme Requests for Implementation

Arthur A. Gleckler
SRFI Editor

How do we grow the language?


SRFI Motivation (I)

SRFI Motivation (II)

SRFI Motivation (III)

What are the SRFIs?


SRFI Survey

SRFIs 0-9

0 final Feature-based conditional expansion construct
1 final List Library
2 final AND-LET*: an AND with local bindings, a guarded LET* special form
3 withdrawn List-Set Library
4 final Homogeneous numeric vector datatypes
5 final A compatible let form with signatures and rest arguments
6 final Basic String Ports
7 final Feature-based program configuration language
8 final receive: Binding to multiple values
9 final Defining Record Types

SRFIs 10-19

10 final #, external form
11 final Syntax for receiving multiple values
12 withdrawn Exception Handling
13 final String Libraries
14 final Character-set Library
15 withdrawn Syntax for dynamic scoping
16 final Syntax for procedures of variable arity
17 final Generalized set!
18 final Multithreading support
19 final Time Data Types and Procedures

SRFIs 20-29

20 withdrawn Simple object system
21 final Real-time multithreading support
22 final Running Scheme Scripts on Unix
23 final Error reporting mechanism
24 withdrawn Define-syntax in local lexical scopes
25 final Multi-dimensional Array Primitives
26 final Notation for Specializing Parameters without Currying
27 final Sources of Random Bits
28 final Basic Format Strings
29 final Localization

SRFIs 30-39

30 final Nested Multi-line Comments
31 final A special form `rec' for recursive evaluation
32 withdrawn Sort Libraries
33 withdrawn Integer Bitwise-operation Library
34 final Exception Handling for Programs
35 final Conditions
36 final I/O Conditions
37 final args-fold: a program argument processor
38 final External Representation for Data With Shared Structure
39 final Parameter objects

SRFIs 40-49

40 withdrawn A Library of Streams
41 final Streams
42 final Eager Comprehensions
43 final Vector library
44 final Collections
45 final Primitives for Expressing Iterative Lazy Algorithms
46 final Basic Syntax-rules Extensions
47 final Array
48 final Intermediate Format Strings
49 final Indentation-sensitive syntax

SRFIs 50-59

50 withdrawn Mixing Scheme and C
51 final Handling rest list
52 withdrawn Permitting and Supporting Extended Character Sets
53 withdrawn Syntactic computations with computation-rules
54 final Formatting
55 final require-extension
56 withdrawn Binary I/O
57 final Records
58 final Array Notation
59 final Vicinity

SRFIs 60-69

60 final Integers as Bits
61 final A more general cond clause
62 final S-expression comments
63 final Homogeneous and Heterogeneous Arrays
64 final A Scheme API for test suites
65 withdrawn define-immutable: A Syntax to Define Identifiers With Immutable Values
66 final Octet Vectors
67 final Compare Procedures
68 withdrawn Comprehensive I/O
69 final Basic hash tables

SRFIs 70-79

70 final Numbers
71 final Extended LET-syntax for multiple values
72 final Hygienic macros
73 withdrawn Exact Infinities
74 final Octet-Addressed Binary Blocks
75 withdrawn R6RS Unicode data
76 withdrawn R6RS Records
77 withdrawn Preliminary Proposal for R6RS Arithmetic
78 final Lightweight testing
79 withdrawn Primitive I/O

SRFIs 80-89

80 withdrawn Stream I/O
81 withdrawn Port I/O
82 withdrawn Stream Ports
83 withdrawn R6RS Library Syntax
84 withdrawn Universal Identifiers
85 withdrawn Recursive Equivalence Predicates
86 final MU and NU simulating VALUES & CALL-WITH-VALUES, and their related LET-syntax
87 final => in case clauses
88 final Keyword objects
89 final Optional positional and named parameters

SRFIs 90-99

90 final Extensible hash table constructor
91 withdrawn Extended ports
92 withdrawn ALAMBDA and ALAMBDA*
93 withdrawn R6RS Syntax-Case Macros
94 final Type-Restricted Numerical Functions
95 final Sorting and Merging
96 final SLIB Prerequisites
97 final SRFI Libraries
98 final An interface to access environment variables
99 final ERR5RS Records

SRFIs 100-109

100 final define-lambda-object
101 final Purely Functional Random-Access Pairs and Lists
102 withdrawn Procedure Arity Inspection
103 withdrawn Library Files
104 withdrawn Library Files Utilities
105 final Curly-infix-expressions
106 final Basic socket interface
107 final XML reader syntax
108 final Named quasi-literal constructors
109 final Extended string quasi-literals

SRFIs 110-119

110 final Sweet-expressions (t-expressions)
111 final Boxes
112 final Environment Inquiry
113 final Sets and bags
114 withdrawn Comparators
115 final Scheme Regular Expressions
116 final Immutable List Library
117 final Mutable Queues
118 final Simple adjustable-size strings
119 final wisp: simpler indentation-sensitive scheme

SRFIs 120-129

120 final Timer APIs
121 final Generators
122 final Nonempty Intervals and Generalized Arrays
123 final Generic accessor and modifier operators
124 final Ephemerons
125 final Intermediate hash tables
126 final R6RS-based hashtables
127 final Lazy Sequences
128 final Comparators (reduced)
129 final Titlecase procedures

SRFIs 130-139

130 final Cursor-based string library
131 final ERR5RS Record Syntax (reduced)
132 final Sort Libraries
133 final Vector Library (R7RS-compatible)
134 final Immutable Deques
135 final Immutable Texts
136 final Extensible record types
137 final Minimal Unique Types
138 final Compiling Scheme programs to executables
139 final Syntax parameters

SRFIs 140-149

140 final Immutable Strings
141 final Integer division
142 withdrawn Bitwise Operations
143 final Fixnums
144 final Flonums
145 final Assumptions
146 final Mappings
147 final Custom macro transformers
148 final Eager syntax-rules
149 final Basic Syntax-rules Template Extensions

SRFIs 150-159

150 final Hygienic ERR5RS Record Syntax (reduced)
151 final Bitwise Operations
152 final String Library (reduced)
153 withdrawn Ordered Sets
154 final First-class dynamic extents
155 final Promises
156 final Syntactic combiners for binary predicates
157 final Continuation marks
158 final Generators and Accumulators
159 final Combinator Formatting

SRFIs 160-162

160 draft Homogeneous numeric vector libraries
161 draft Unifiable Boxes
162 draft Comparators sublibrary

Talk progress

SRFI Process > Steps (I)

SRFI Process > Steps (II)

SRFI Process > States

Talk progress

SRFI History

SRFI History > Cumulative SRFIs

SRFI History > Relation to RnRS

SRFI History > Relation to R6RS

SRFI History > Relation to R7RS

SRFI History > Survey of implementations

SRFI History > Survey > Counts

SRFI History > Survey > Matrix

Talk progress

Talk progress

SRFI Future


Slides and Paper

Extra slides

The Reports

RS Scheme: An Interpreter for Extended Lambda Calculus (AIM 349) 1975
R2RS The Revised Report on Scheme, A Dialect of Lisp (AIM 452) 1978
R3RS The Revised Revised Report on Scheme, or An UnCommon Lisp (AIM 848) 1985
IEEE-1178 IEEE Standard for the Scheme Programming Language 1990, 2008
R4RS Revised4 Report on the Algorithmic Language Scheme 1991
R5RS Revised5 Report on the Algorithmic Language Scheme 1998
R6RS Revised6 Report on the Algorithmic Language Scheme 2007
R7RS small Revised7 Report on the Algorithmic Language Scheme 2013
R7RS large Revised7 Report on the Algorithmic Language Scheme in progress

Snow (or Snow Fort)

Diagrams > SRFI Home

SRFI home

SRFI History > Editors

SRFI History > Recent improvements