SRFI Skill
/plugin marketplace add plurigrid/asi/plugin install asi-skills@asi-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
"SRFIs extend the Scheme programming language. You can help." — srfi.schemers.org
Scheme Requests for Implementation: portable library specifications with GF(3) categorization.
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.
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| SRFI | Name | Status | Key Exports |
|---|---|---|---|
| 204 | Wright-Cartwright-Shinn Pattern Matcher | Final | match, match-lambda |
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 incorporates SRFIs as standard libraries:
(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(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| SRFI | Chez | Chicken | Gauche | Guile | Racket |
|---|---|---|---|---|---|
| 1 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 9 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 18 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 27 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 64 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 125 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 158 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 180 | ✓ | ✓ | ✓ | ✓ | ✓ |
;; 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))
;; 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)
(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
| 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 |
# 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
This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:
general: 734 citations in bib.duckdbThis 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
The skill participates in triads satisfying:
(-1) + (0) + (+1) ≡ 0 (mod 3)
This ensures compositional coherence in the Cat# equipment structure.
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.