Data Types
Here is how you would declare a new type Vehicle, which can be either a Car, Plane, or Submarine.
type Vehicle
= Car
| Plane
| Submarine
Type Parameters TODO
Union Types can be given parameters to allow them to wrap values. In the example below, the type Vehicle has a Car case that carries a value of type Int.
type Vehicle
= Car Int
| Sled
This would mean that to create an instance of type Car, you would need to provide it an instance of Int:
Car 42
Variable Type Parameters TODO
Union Types can also be given variable type parameters to allow them to wrap generic values. In the example below, the type Option has a Some case that carries a value of type Int.
type Option a
= Some a
| None
This would mean that if you wanted to create an instance of Option Int, you could use any of the following expressions:
Some 42
None
Some 1337
Some 0
Similarly, if you wanted to create an instance of Option String, you could use any of the following expressions:
Some "yolo"
None