{"size": 1969, "ext": "scrbl", "max_stars_repo_path": "doc/rnrs/records/inspection.scrbl", "max_stars_repo_name": "david135/sagittarius-scheme", "max_stars_repo_stars_event_min_datetime": "2015-11-07T07:13:35.000Z", "max_stars_repo_stars_event_max_datetime": "2022-02-15T03:35:14.000Z", "max_issues_repo_path": "doc/rnrs/records/inspection.scrbl", "max_issues_repo_name": "david135/sagittarius-scheme", "max_issues_repo_issues_event_min_datetime": "2016-04-28T21:59:59.000Z", "max_issues_repo_issues_event_max_datetime": "2021-07-01T08:42:21.000Z", "max_forks_repo_path": "doc/rnrs/records/inspection.scrbl", "max_forks_repo_name": "david135/sagittarius-scheme", "max_forks_repo_forks_event_min_datetime": "2016-12-28T12:41:23.000Z", "max_forks_repo_forks_event_max_datetime": "2020-02-26T20:52:02.000Z"}
{"max_stars_count": 39, "max_issues_count": 3, "max_forks_count": 4, "avg_line_length": 41.8936170213, "max_line_length": 83, "alphanum_fraction": 0.7364144236}
@; -*- mode:scribble; coding: utf-8 -*-

@subsection[:tag "rnrs.records.inspection.6"]{Records inspection}

@define[Library]{@name{(rnrs records syntactic (6))}}
@desc{The @code{(rnrs records inspection (6))}library provides procedures for
inspecting records and their record-type descriptors. These procedures are designed
to allow the writing of portable printers and inspectors.
}

@define[Function]{@name{record?} @args{obj}}
@desc{[R6RS] Returns #t if @var{obj} is a record, and its record type is not
opaque, and returns #f otherwise.
}

@define[Function]{@name{record-rtd} @args{record}}
@desc{[R6RS] Returns the rtd representing the type of @var{record} if the type
is not opaque. The rtd of the most precise type is returned; that is, the type
@var{t} such that @var{record} is of type @var{t} but not of any type that
extends @var{t}. If the type is opaque, an exception is raised with condition
type @code{&assertion}.
}

@define[Function]{@name{record-type-name} @args{rtd}}
@define[Function]{@name{record-type-parent} @args{rtd}}
@define[Function]{@name{record-type-uid} @args{rtd}}
@desc{[R6RS] Returns the name/parent/uid of the record-type descriptor @var{rtd}.
}

@define[Function]{@name{record-type-generative?} @args{rtd}}
@define[Function]{@name{record-type-sealed?} @args{rtd}}
@define[Function]{@name{record-type-opaque?} @args{rtd}}
@desc{[R6RS] Returns #t if the record-type descriptor is generative/sealed/opaque,
and #f if not.
}

@define[Function]{@name{record-type-field-names} @args{rtd}}
@desc{[R6RS] Returns a vector of symbols naming the fields of the type represented
by @var{rtd} (not including the fields of parent types) where the fields are
ordered as described under @code{make-record-type-descriptor}.
}

@define[Function]{@name{record-type-mutable?} @args{rtd k}}
@desc{[R6RS] Returns #t if the field specified by @var{k} of the type represented
by @var{rtd} is mutable, and #f if not. @var{K} is as in @code{record-accessor}.
}
