SRFI Skill
"SRFIs extend the Scheme programming language. You can help."
— srfi.schemers.org
Scheme Requests for Implementation: portable library specifications with GF(3) categorization.
Overview
SRFIs are community-driven specifications that extend Scheme beyond R5RS/R6RS/R7RS. Each SRFI has a unique number, status (draft/final/withdrawn), and reference implementation.
Core SRFIs by Category
Data Structures [MINUS: -1]
| SRFI |
Name |
Status |
Key Exports |
| 1 |
List Library |
Final |
fold, unfold, filter, partition |
| 4 |
Homogeneous Vectors |
Final |
u8vector, f64vector, typed arrays |
| 9 |
Defining Record Types |
Final |
define-record-type |
| 14 |
Character Sets |
Final |
char-set, char-set-contains? |
| 69 |
Basic Hash Tables |
Final |
make-hash-table, hash-table-ref |
| 113 |
Sets and Bags |
Final |
set, bag, set-contains? |
| 125 |
Intermediate Hash Tables |
Final |
hash-table-map, comparators |
| 128 |
Comparators (Reduced) |
Final |
make-comparator, comparator-hash |
| 133 |
Vector Library |
Final |
vector-map, vector-fold |
| 146 |
Mappings |
Final |
mapping, functional maps |
| 158 |
Generators and Accumulators |
Final |
make-coroutine-generator |
Control Flow [ERGODIC: 0]
| SRFI |
Name |
Status |
Key Exports |
| 2 |
AND-LET* |
Final |
and-let* short-circuit binding |
| 8 |
receive |
Final |
receive for multiple values |
| 11 |
let-values |
Final |
let-values, let*-values |
| 18 |
Multithreading |
Final |
make-thread, mutex, condition-variable |
| 34 |
Exception Handling |
Final |
guard, raise |
| 39 |
Parameter Objects |
Final |
make-parameter, parameterize |
| 45 |
Primitives for Lazy Eval |
Final |
delay, force, lazy |
| 124 |
Ephemerons |
Final |
make-ephemeron, weak references |
| 154 |
First-Class Dynamic Extents |
Final |
dynamic-extent, delimited continuations |
| 155 |
Promises |
Final |
delay-force, iterative lazy |
| 226 |
Control Features |
Final |
call/cc, values, dynamic-wind |
Syntax & Macros [PLUS: +1]
| SRFI |
Name |
Status |
Key Exports |
| 0 |
Feature-Based Conditionals |
Final |
cond-expand |
| 6 |
Basic String Ports |
Final |
open-input-string, get-output-string |
| 26 |
Cut/Cute |
Final |
cut, cute partial application |
| 42 |
Eager Comprehensions |
Final |
list-ec, sum-ec, do-ec |
| 46 |
Syntax for Multiple Values |
Final |
values->list, values->vector |
| 57 |
Records |
Withdrawn |
(superseded by 99, 136) |
| 72 |
Hygienic Macros |
Final |
syntax-case compatible |
| 139 |
Syntax Parameters |
Final |
define-syntax-parameter |
| 147 |
Custom Macro Transformers |
Final |
er-macro-transformer |
| 149 |
Basic Syntax-Rules Extensions |
Final |
_, ... patterns |
| 211 |
Scheme Macros for Definitions |
Final |
define-macro |
I/O & System [MINUS: -1]
| SRFI |
Name |
Status |
Key Exports |
| 6 |
Basic String Ports |
Final |
in-memory I/O |
| 28 |
Basic Format Strings |
Final |
format |
| 38 |
External Representation with Cycles |
Final |
write/ss, read/ss |
| 48 |
Intermediate Format Strings |
Final |
format with more directives |
| 106 |
Basic Socket Interface |
Final |
make-client-socket, socket-send |
| 170 |
POSIX API |
Final |
file-info, set-file-mode! |
| 180 |
JSON |
Final |
json-read, json-write |
| 192 |
Port Positioning |
Final |
port-position, set-port-position! |
| 193 |
Command Line |
Final |
command-line, option-processor |
Numeric [ERGODIC: 0]
| SRFI |
Name |
Status |
Key Exports |
| 27 |
Sources of Random Bits |
Final |
random-integer, random-real |
| 60 |
Integers as Bits |
Final |
bitwise-and, bit-set? |
| 94 |
Type-Restricted Numerics |
Final |
fx+, fl* |
| 141 |
Integer Division |
Final |
floor/, ceiling/, truncate/ |
| 143 |
Fixnums |
Final |
fx+, fxarithmetic-shift |
| 144 |
Flonums |
Final |
fl+, flsin, flexp |
| 151 |
Bitwise Ops on Arbitrary Integers |
Final |
bitwise-ior, integer-length |
| 166 |
Monadic Formatting |
Final |
format with monadic composition |
Testing & Debugging [PLUS: +1]
| SRFI |
Name |
Status |
Key Exports |
| 64 |
A Scheme API for Test Suites |
Final |
test-begin, test-equal, test-assert |
| 78 |
Lightweight Testing |
Final |
check, check-ec |
| 219 |
Define Higher-Order Lambda |
Final |
define with curry |
Pattern Matching [PLUS: +1]
| SRFI |
Name |
Status |
Key Exports |
| 204 |
Wright-Cartwright-Shinn Pattern Matcher |
Final |
match, match-lambda |
GF(3) Distribution
MINUS (-1): Data Structures, I/O & System
ERGODIC (0): Control Flow, Numeric
PLUS (+1): Syntax & Macros, Testing, Pattern Matching
Conservation: Σ(categories) ≡ 0 (mod 3) when balanced usage
R7RS-Large Libraries (Red/Tangerine Editions)
R7RS-Large incorporates SRFIs as standard libraries:
Red Edition (2019)
(scheme list) ← SRFI 1
(scheme vector) ← SRFI 133
(scheme sort) ← SRFI 132
(scheme set) ← SRFI 113
(scheme charset) ← SRFI 14
(scheme hash-table) ← SRFI 125
(scheme ilist) ← SRFI 116
(scheme rlist) ← SRFI 101
(scheme ideque) ← SRFI 134
(scheme text) ← SRFI 135
(scheme generator) ← SRFI 158
(scheme lseq) ← SRFI 127
(scheme stream) ← SRFI 41
(scheme box) ← SRFI 111
(scheme list-queue) ← SRFI 117
(scheme comparator) ← SRFI 128
Tangerine Edition (2021)
(scheme bitwise) ← SRFI 151
(scheme fixnum) ← SRFI 143
(scheme flonum) ← SRFI 144
(scheme division) ← SRFI 141
(scheme bytevector) ← R6RS
(scheme mapping) ← SRFI 146
(scheme regex) ← SRFI 115
Implementation Support Matrix
| SRFI |
Chez |
Chicken |
Gauche |
Guile |
Racket |
| 1 |
✓ |
✓ |
✓ |
✓ |
✓ |
| 9 |
✓ |
✓ |
✓ |
✓ |
✓ |
| 18 |
✓ |
✓ |
✓ |
✓ |
✓ |
| 27 |
✓ |
✓ |
✓ |
✓ |
✓ |
| 64 |
✓ |
✓ |
✓ |
✓ |
✓ |
| 125 |
✓ |
✓ |
✓ |
✓ |
✓ |
| 158 |
✓ |
✓ |
✓ |
✓ |
✓ |
| 180 |
✓ |
✓ |
✓ |
✓ |
✓ |
SRFI-27: Random Sources (Key for Gay.jl Bridge)
;; SRFI-27 provides the abstraction layer for splittable RNG
(import (srfi 27))
;; Create a random source with specific seed
(define my-source (make-random-source))
(random-source-pseudo-randomize! my-source 1069 42)
;; Get integers and reals
(define rand-int (random-source-make-integers my-source))
(define rand-real (random-source-make-reals my-source))
;; GF(3) trit from random source
(define (random-trit source)
(- ((random-source-make-integers source) 3) 1))
SRFI-171: Transducers
;; Composable sequence transformations
(import (srfi 171))
;; Filter, map, take composed
(define xform
(compose
(tfilter even?)
(tmap (lambda (x) (* x x)))
(ttake 5)))
;; Apply to list
(list-transduce xform rcons '(1 2 3 4 5 6 7 8 9 10))
;; => (4 16 36 64 100)
SRFI-204: Pattern Matching
(import (srfi 204))
;; Destructuring with guards
(match '(1 2 3)
((x y z) (guard (< x y z)) (list z y x))
(_ 'no-match))
;; => (3 2 1)
;; Quasiquote patterns
(match '(lambda (x) (+ x 1))
(`(lambda (,var) (+ ,var 1)) var)
(_ #f))
;; => x
Integration with Little Schemer
| SRFI |
Little Schemer Concept |
| 1 |
member?, rember, firsts |
| 9 |
Atoms as records |
| 27 |
Y combinator with random exploration |
| 45 |
Lazy evaluation (Seasoned Ch. 16) |
| 154 |
Continuations (Seasoned Ch. 13) |
| 171 |
Collectors as transducers |
| 204 |
Pattern matching vs cond |
Commands
# Search SRFIs by keyword
srfi search "hash table"
# Show SRFI abstract
srfi show 125
# Clone SRFI implementation
srfi clone 171
# Open in browser
srfi open 204
# List all final SRFIs
srfi list --status final
References
Scientific Skill Interleaving
This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:
Graph Theory
- networkx [○] via bicomodule
Bibliography References
general: 734 citations in bib.duckdb
Cat# Integration
This skill maps to Cat# = Comod(P) as a bicomodule in the equipment structure:
Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ⊗
Kan Role: Adj
Color: #26D826
GF(3) Naturality
The skill participates in triads satisfying:
(-1) + (0) + (+1) ≡ 0 (mod 3)
This ensures compositional coherence in the Cat# equipment structure.