aboutsummaryrefslogtreecommitdiff
path: root/examples/35-generic-sums/src/HelloWorld.shed
blob: e10456bd4e0d031bb3ca6b52360229aba5367e7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct Some[T](value: T) {}

struct None() {}

sumtype Option[T] = Some[T] | None;

pub fun main() ! Io -> Unit {
    printOption!(Some[String]("hello, world!"));
    printOption!(None());
}

fun printOption(option: Option[String]) !Io -> Unit {
    when (option) {
        is Some[String] {
            print!("Some(");
            print!(option.value);
            print!(")\n");
        }
        is None {
            print!("None\n");
        }
    }
}