8 Enumerations (deprecated)
| (require (planet untyped/unlib/enum)) | 
Utilities for defining simple enumerations of booleans, symbols and integers. These are useful wherever you would normally use a small collection of literals to represent possible values of a variable, and test for value equality with eq?. The define-enum form binds the literals to Scheme identifiers so the compiler catches typos that might otherwise take a long time to debug.
| (struct enum (name values pretty-values)) | 
| name : symbol? | 
| values : (listof (U boolean? symbol? integer?)) | 
| pretty-values : (listof string?) | 
An enumeration. For each symbol in values there is a human-readable string equivalent in pretty-values.
Returns a string representation of (enum-values enum), useful for including in debugging output. separator is used to separate the enum values in the return value.
| Examples: | 
| > (define-enum vehicle (car boat plane)) | 
| > (enum->string vehicle) | 
| "car, boat, plane" | 
Returns a string representation of (enum-pretty-values enum), useful for describing the possible values to a user. separator is used to separate the enum values in the return value.
| Examples: | 
| > (define-enum vehicle (car boat plane)) | 
| > (enum->pretty-string vehicle) | 
| "car, boat, plane" | 
Returns #t if value is a member of (enum-values enum).
| Examples: | 
| > (define-enum vehicle (car boat plane)) | 
| > (enum-value? vehicle 'car) | 
| #t | 
| > (enum-value? vehicle 'apple) | 
| #f | 
Returns a contract that accepts values from (enum-values enum).
| (enum-prettify enum value [default]) → string? | ||||||||||||
| enum : enum? | ||||||||||||
| value : symbol? | ||||||||||||
| 
 | 
Returns the pretty equivalent of value. If value is not found in enum, default is used instead:
- if default is a procedure, it is called to determine the return value; 
- if default is not a procedure, it is returned. 
Binds the following identifiers:
- enum-id: an enumeration struct; 
- value-id (one binding per value): the values of the enumeration, each a symbol; 
- enum-id?: a predicate that recognises the values; 
- enum-id-out: a provide form that provides all of the above. 
If value-expr and pretty-expr are unspecified for a value, they are created from value-id.
| Examples: | 
| > (define-enum vehicle (car boat plane)) | 
| > car | 
| car | 
| > boat | 
| boat | 
| > plane | 
| plane | 
| > (vehicle? car) | 
| #t | 
| > (vehicle? 'apple) | 
| #f | 
The optional #:prefix argument affects the names of the value identifiers (car, boat and so on) bound by the macro:
| Examples: | 
| > (define-enum vehicle (car boat plane) #:prefix vehicle-) | 
| > vehicle-car | 
| car | 
| > vehicle-boat | 
| boat | 
| > vehicle-plane | 
| plane |