AtlatestRepositorysigil-web-styles
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": 7612
},13
{14
"name": "srfi9--get-doc",15
"kind": "procedure",16
"description": "Helper: Get docstring from syntax object",17
"line": 8018
},19
{20
"name": "srfi9--get-srcloc",21
"kind": "procedure",22
"description": "Helper: Get srcloc from syntax object",23
"line": 8424
},25
{26
"name": "srfi9--strip-angles",27
"kind": "procedure",28
"description": "Helper: Strip angle brackets from type name for base name",29
"line": 8830
},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": 10136
},37
{38
"name": "srfi9--build-accessors",39
"kind": "procedure",40
"description": "Build all accessor/mutator definitions",41
"line": 13842
},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": 14948
}49
]50
}