module Stdlib.Data.Bool.Base;

import Juvix.Builtin.V1.Bool open public;
import Stdlib.Data.Fixity open;

--- Logical negation.
not : Bool  Bool
  | true := false
  | false := true;

syntax operator || logical;

--- Logical disjunction. Evaluated lazily. Cannot be partially applied
builtin bool-or
|| : Bool  Bool  Bool
  | true _ := true
  | false a := a;

syntax operator && logical;

--- Logical conjunction. Evaluated lazily. Cannot be partially applied.
builtin bool-and
&& : Bool  Bool  Bool
  | true a := a
  | false _ := false;

--- Returns the first argument if ;true;, otherwise it returns the second argument. Evaluated lazily. Cannot be partially applied.
builtin bool-if
if : {A : Type}  Bool  A  A  A
  | true a _ := a
  | false _ b := b;

--- Logical disjunction.
or (a b : Bool) : Bool := a || b;

--- Logical conjunction.
and (a b : Bool) : Bool := a && b;
Last modified on 2024-04-22 3:20 UTC