These are the portable libraries Committee B will be voting on.
Free docket names: Bia Dike Gaia Leto Nyx Orion Xenos Zephyrus; Kronos used but dropped.
The following order is not necessarily the voting order.
- Red: data structures
- Tangerine: numerics
- Hypnos: SRFIs
- Eos: not SRFIs
- Orange: SRFIs
- Urania: not SRFIs, no implementations
- Selene: not SRFIs, no implementations
- Pan: not SRFIs, no implementations
- Quick summary:
- comprehensive list library
- comprehensive vector library
- sorting
- hash sets (including character sets) and bags
- hashtables
- immutable pairs
- random=-access pairs
- immutable deque
- procedural generators
- lazy lists based on generators or promises
- mutable boxes
- ephemerons
- comparator type class
- Already voted on. See RedEdition.
-
Quick summary:
- immutable mappings, hash-based and ordered
- regular expressions
- accumulators (inverse of generators)
- six kinds of integer division
- bitwise integer ops
- fixnum library
- flonum library
- homogeneous vectors of various types (bitvectors also provide bitwise ops)
- combinator formatting
-
Already voted on. See TangerineEdition.
Transducers: SRFI 171
Multiple values: SRFI 210
Nested define
: SRFI 219
cond
guards: SRFI 61
receive
: SRFI 8
rec
: SRFI 31
Cut/cute
: SRFI 26
Curried procedures: SRFI 232
Binary search: SRFI 223
Maybe/Either: SRFI 189
Environment monad: SRFI 165
Flexvectors: SRFI 214
Unifiable boxes: SRFI 161
Sorted sets: SRFI 153
Random numbers: SRFI 27, plus SRFI 194
Integer sets: SRFI 217
Integer mappings: SRFI 224
Ranges: SRFI 196
Homogeneous vectors: SRFI 160
Bitvectors: SRFI 178
Bytestrings (lexical syntax: SRFI 207
Multidimensional arrays: SRFI 231 or SRFI 164
Comparators: SRFI 162[SRFI 128] plus (https://srfi.schemers.org/srfi-162/srfi-162.html) plus
SRFI 228
(integrated into (scheme comparators)
Enumerations: SRFI 209
Compound objects: SRFI 222
Yet more generator extensions: SRFI 162
Coroutine generators: SRFI 190
Generic combinator procedures: SRFI 235
Generic dictionary operations: SRFI 225
Generic sequence operations: SequencesCowan
Generic set/bag operations: SetsCowan
INI files: SRFI 233
Matching: Withdrawn SRFI 204 bis (eliminate non-portable match clauses)
Port operations: PortOperationsCowan Implementation
Modify macros: Srfi17ExtensionsCowan. Implementation
Loops: SRFI 42 or Riastradh's foof-loop or Chibi loop, Implementation: all. Summarized at EagerComprehensions
Assumptions/Assertions/Warnings: SRFI 145 and AssertionsWarnings, Implementation. or R6RS. R6RS, R6RS with optional message and irritants plus R6RS warnings
while
, until
, do-times
: SimpleIterationCL. Implementation.
let-list
, let-vector
: MacrosAlexandria. Partial Implementation
if*
with arbitrarily many arguments: Daphne Preston-Kendal's rationale. Implementation
and-let*
: SRFI 2 using define-macro, using syntax-rules
using explicit renaming,
using syntax-case), or
SRFI 202 using syntax-case
Testing: SRFI 64 or ChibiChickenTest or SRFI 78. Implementations: all.
String interpolation: StringInterpolateCowan. Implementation
Pathname objects: PathnamesPython. Implementation
Skip lists: No writeup yet. Implementation
JSON: SRFI 180,
(schemepunk json)
code
and data, or
trivial (json-read
stream [ max-chars ])
and (json-write
stream obj)
.
Trees: Trees. Implementation.
Optional arguments (other than by case-lambda
):
SRFI 227
or OptionalsRiastradh.
Implementation,
or (chibi optional).
Multiple values passed through => in cond
: see #90
Named parameters: SRFI 177 bis (dpk's), SRFI 89, or (chibi optional)(portable)
Enumeration maps: EnumMappingsCowan
Property lists to bindings: LetSettingsKendal
Twinjo I/O: Twinjo + Twinjo procedures + Lisp Serialization Conventions
Levenshtein distance: LevenshteinDistanceGauche
Bimaps: Bimaps
List mutation: ListSurgeryCowan
Language tag searching: BCP 47. Procedures take a tag and a dictionary of tagged objects, and return either an alist (ordered choice) or a single key-value pair.
Relations: RelationsCowan
Combinations: CombinationsGauche
URI objects: UrisCowan
Unicode character database: UcdCowan, AdvancedUcdCowan
Environment: SRFI 112 with MiscEnvironmentSchudy
CSV, DSV: DataFormatsCowan
Binary heap: BinaryHeapsCowan
Dijkstra arrays (deques) DijkstraArrays
Immutable vectors: FectorsPrice
Applicable record instances: R6RS formal comment via tagged procedures
Record-let
: #45
Property lists to bindings: LetSettingsKendal
C-style structures: ByteStructuresTaylanUB, Implementation. StructuresCowan
Predicate generic functions: GenericsChibi (needs extension for subtyping), FastGeneric Implementations: all.
Streaming regular expressions: PragmaticParsingBaker
CLI utilities: SRFI 37, Optimism ArgsChicken, AppChibi + ConfigChibi, ArgParsePython. Implementation: all.
Timespecs: Date and time arithmetic: TimeAdvancedCowan, SRFI 19
Date-time parser: Hato date parser, SRFI 19
Date-time formatter: TimeFormattingCowan, SRFI 19, other libs
Memoization: Memoize (not a proposal yet), Racket, Haskell
Message digests: MessageDigests
Monads, applicative functors, and functors: ContextsCowan
Character-cell terminals: TerminalsCowan
Strings: SRFI 152 (index-based), SRFI 130 (cursor-based), pre-SRFI 135x