Maybe and Pair

Maybe type and Pair type

Types

Maybe

type Maybe (a: Type) { 
  none 
  some (value: Bool)
 }
  
// Maybe concrete values:
  // Maybe.none
  // Maybe.some a value // value can be anything of the type a

//Examples:
  // Maybe.some Bool.true
  // Maybe.some (Pair.new Bool.true Bool.true)

Pair

type Pair (a: Type) (b: Type) {
  new (fst: a) (snd: b)
}

// Pair concrete values:
  // Pair.new a b fst snd // fst and snd can be anything of the type a and a
  
//Examples:
  // Pair.new Bool.true Bool.false
  // Pair.new (Maybe.none Bool) Bool.true