Boolean algebras and types isomorphic to
Bool.
There are already solutions for
Boolean algebras in the Haskell
ecosystem, but they do not offer easy instantiations for types
isomorphic to
Bool. In particular, if type
a is
isomorphic to
Bool, so it satisfies `IsBool a`, we would like
to instantiate 'Boolean a' by just giving
true and
false. To facilitate this within the limits of the Haskell
class system, we define the class
Boolean mutually with class
IsBool, so that operations
not,
(&&), and
(||) can get default implementations.
Usage:
import Prelude hiding ( not, (&&), (||) ) import
Agda.Utils.Boolean