Flop[T] = distinct T
FlopError = object of CatchableError
Floppable = concept proc isNone(x: Flop[Self]): bool proc none(_: type Flop[Self]): Flop[Self]
proc flop[T](x: T): Flop[T] {.inline.}
proc get[T](x: Flop[T]): T {.inline.}
proc isNone[T](x: Flop[T]): bool
proc none[T](): Flop[T] {.inline.}
proc none[T](_: type T): Flop[T]
proc some[T](x: T): Flop[T] {.inline.}
proc tryGet[T](x: Flop[T]): T {.inline.}
template isSome[T](x: Flop[T]): bool