represented using only: • Unit • Sum (Either) • Product (Tuple2) • A way to handle recursive types type Bit = Either[Unit, Unit]
type Byte = (Bit, (Bit, (Bit, (Bit, (Bit, (Bit, (Bit, Bit)))))))
type Option[A] = Either[Unit, A]
"// intuitively: Either[Unit, (A, List[A])]
type List[A] = Fix[λ[α "=> Either[Unit, (A, α)]]] !20