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"); } } }