ava/enumerations.md

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 }
```