{"size": 732, "ext": "scrbl", "max_stars_repo_path": "doc/guide/scribble/datatypes/defined-datatypes.scrbl", "max_stars_repo_name": "edbutler/rosette", "max_stars_repo_stars_event_min_datetime": "2020-11-14T20:12:54.000Z", "max_stars_repo_stars_event_max_datetime": "2020-11-14T20:12:54.000Z", "max_issues_repo_path": "doc/guide/scribble/datatypes/defined-datatypes.scrbl", "max_issues_repo_name": "edbutler/rosette", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "doc/guide/scribble/datatypes/defined-datatypes.scrbl", "max_forks_repo_name": "edbutler/rosette", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": 1, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 40.6666666667, "max_line_length": 106, "alphanum_fraction": 0.7732240437}
#lang scribble/manual

@(require (for-label racket))


@title[#:tag "ch:programmer-defined-datatypes" #:style 'toc]{Programmer-Defined Datatypes}

@seclink["ch:built-in-datatypes"]{Chapter 4} presents the built-in Racket datatypes that 
are lifted by Rosette to work in the presence of symbolic values.  This chapter introduces two mechanisms 
for creating new programmer-defined datatypes:  @seclink["sec:struct"]{structures} and 
@seclink["sec:enum"]{enumerations}.  Rosette structures lift Racket structures to work 
with symbolic values.  Enumerations are similar to Java's enums, and they 
can also be used with solver-aided facilities.  

@[table-of-contents]
@include-section["structs.scrbl"]
@include-section["enums.scrbl"]
