AtlatestRepositorysigil-web-styles

sigil-web-styles / tree / build / dev / lib / srfisrfi-9.json

1{
2 "module": "(srfi srfi-9)",
3 "package": "sigil-stdlib",
4 "source": "/home/daviwil/Projects/Code/sigil/sigil/packages/sigil-stdlib/src/srfi/srfi-9.sgl",
5 "description": "(srfi srfi-9) - Record Types\n\nDefine structured data types with named fields. SRFI-9 records provide\ntype-safe constructors, predicates, and field accessors. This is the\nstandard way to define compound data structures in Scheme.\n\nSee: [SRFI-9 Specification](https://srfi.schemers.org/srfi-9/srfi-9.html)\n\n```scheme\n(import (srfi srfi-9))\n\n;; Define a point type with x and y coordinates\n(define-record-type <point>\n (make-point x y) ; constructor\n point? ; predicate\n (x point-x) ; read-only field\n (y point-y set-point-y!)) ; read-write field\n\n;; Use the record\n(define p (make-point 10 20))\n(point? p) ; => #t\n(point-x p) ; => 10\n(set-point-y! p 30)\n(point-y p) ; => 30\n```\n\n## Syntax\n\n```scheme\n(define-record-type <type-name>\n (constructor-name field-name ...)\n predicate-name\n (field-name accessor-name)\n (field-name accessor-name mutator-name)\n ...)\n```\n\n- **type-name**: A symbol (conventionally in angle brackets like `<point>`)\n- **constructor-name**: Creates instances; takes values for listed fields\n- **predicate-name**: Returns `#t` for instances of this type\n- **field specs**: Each field has an accessor; optionally a mutator\n\n## Examples\n\n```scheme\n;; Immutable record (no setters)\n(define-record-type <rgb>\n (rgb r g b)\n rgb?\n (r rgb-r)\n (g rgb-g)\n (b rgb-b))\n\n(define red (rgb 255 0 0))\n(rgb-r red) ; => 255\n\n;; Record with partial constructor\n(define-record-type <person>\n (make-person name) ; only name required\n person?\n (name person-name)\n (age person-age set-person-age!)) ; age set later\n\n(define p (make-person \"Alice\"))\n(set-person-age! p 30)\n```",
6 "exports": [
7 {
8 "name": "srfi9--unwrap",
9 "kind": "procedure",
10 "description": "Helper: Unwrap syntax object to get datum",
11 "line": 76
12 },
13 {
14 "name": "srfi9--get-doc",
15 "kind": "procedure",
16 "description": "Helper: Get docstring from syntax object",
17 "line": 80
18 },
19 {
20 "name": "srfi9--get-srcloc",
21 "kind": "procedure",
22 "description": "Helper: Get srcloc from syntax object",
23 "line": 84
24 },
25 {
26 "name": "srfi9--strip-angles",
27 "kind": "procedure",
28 "description": "Helper: Strip angle brackets from type name for base name",
29 "line": 88
30 },
31 {
32 "name": "srfi9--build-field-accessor",
33 "kind": "procedure",
34 "description": "Build accessor/mutator definitions for a field spec\nfield-spec is (field-name getter) or (field-name getter setter)\nReturns list of syntax-wrapped definitions with docstrings",
35 "line": 101
36 },
37 {
38 "name": "srfi9--build-accessors",
39 "kind": "procedure",
40 "description": "Build all accessor/mutator definitions",
41 "line": 138
42 },
43 {
44 "name": "%srfi9--transformer",
45 "kind": "procedure",
46 "description": "The define-record-type transformer\nForm: (define-record-type <type-name>\n (constructor-name field ...)\n predicate-name\n field-spec ...)",
47 "line": 149
48 }
49 ]