26 lines
530 B
Markdown
26 lines
530 B
Markdown
# Enumerations
|
|
|
|
Enumerations are sum types.
|
|
|
|
## Example: The Option Type
|
|
|
|
```
|
|
enum Option[A] is
|
|
record Some[A] is (value: A)
|
|
object None
|
|
|
|
fn some[A]: (a: A) => Some[A] is a => Some(a)
|
|
```
|
|
|
|
## Example: The Either Type
|
|
|
|
TODO: Describe import behavior! Does importing Either import Left/Right?
|
|
|
|
```
|
|
enum Either[L, R] is
|
|
record Left[L] is { value: L }
|
|
record Right[R] is { value: R }
|
|
|
|
fn left[L]: (left: L) => Either[L, Nothing] is l => Left { l }
|
|
fn right[R]: (right: R) => Either[Nothing, R] is r => Right { r }
|
|
```
|