Intermediate Functions

MaybeBool Examples

Function Create

Create (a:Bool) : MaybeBool{
 MaybeBool.some a
}
  

The create function gets the input "a" of the Type Bool and creates a Type MaybeBool where its value is "a". Therefore, if "a" is Bool.true, the result will be MaybeBool.some Bool.true, note that the value of "a" is now stored inside the constructor "some" of the MaybeBool type.

Function Or

Or (a: MaybeBool) (b: MaybeBool) : MaybeBool {
  match MaybeBool a {
    none => b
    some value => MaybeBool.some value
  }
}

The function "or" returns the first input that is a Maybe.some

PairBool Examples

Function neg

Neg (riap: PairBool) : PairBool {
  match PairBool riap {
    new fst snd => 
      match Bool fst {
        true => 
          match Bool snd {
            true => PairBool.new Bool.false Bool.false
            false => PairBool.new Bool.false Bool.true
          }
        false => 
          match Bool snd {
            true => PairBool.new Bool.true Bool.false
            false => PairBool.new Bool.true Bool.true
          }
      }
  }
}

This function receives a PairBool and returns a new PairBool with the negation of its elements. If you look closely, there is a smarter way to do this function.

Function swap

swap (a: PairBool) : PairBool {
   match PairBool a {
    new: PairBool.new a.snd a.fst
  }
}

The swap functions simply swaps the first with the second element of the pair. Basically it creates a new pair where the second element is the first and vice versa.