Generalized boolean class
ModuleBoolean-0.2.4Haskell98
Data.Boolean
Some classes for generalized boolean operations.
In this design, for if-then-else, equality and inequality tests, the boolean type depends on the value type.
I also tried using a unary type constructor class. The class doesn't work
for regular booleans, so generality is lost. Also, we'd probably have
to wire class constraints in like: (==*) :: Eq a => f Bool -> f a -> f
a -> f a, which disallows situations needing additional constraints,
e.g., Show.
Starting with 0.1.0, this package uses type families. Up to version 0.0.2, it used MPTCs with functional dependencies. My thanks to Andy Gill for suggesting & helping with the change.
- 4 classes
- 8 values
- PackageBoolean-0.2.4
- Exports13
- LanguageHaskell98
- LicenceBSD-3-Clause
- SourceBoolean.hs
BooleanOf computed the boolean analog of a specific type.
Instances11BooleanOf, …
type BooleanOf Integer = BoolDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf Bool = BoolDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf Char = BoolDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf Double = BoolDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf Float = BoolDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf Int = BoolDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf (a, b) = BooleanOf aDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf (a, b, c) = BooleanOf aDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf (a, b, c, d) = BooleanOf aDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf (z -> a) = z -> BooleanOf aDefined in Boolean-0.2.4 · Data.Booleantype BooleanOf [a] = BooleanOf aDefined in Boolean-0.2.4 · Data.Boolean
Instances11IfB, …
IfB IntegerDefined in Boolean-0.2.4 · Data.BooleanIfB BoolDefined in Boolean-0.2.4 · Data.BooleanIfB CharDefined in Boolean-0.2.4 · Data.BooleanIfB DoubleDefined in Boolean-0.2.4 · Data.BooleanIfB FloatDefined in Boolean-0.2.4 · Data.BooleanIfB IntDefined in Boolean-0.2.4 · Data.Boolean(Boolean (BooleanOf a), BooleanOf a ~ Bool) => IfB [a]Defined in Boolean-0.2.4 · Data.BooleanIfB a => IfB (z -> a)Defined in Boolean-0.2.4 · Data.Boolean(bool ~ BooleanOf p, bool ~ BooleanOf q, IfB p, IfB q) => IfB (p, q)Defined in Boolean-0.2.4 · Data.Boolean(bool ~ BooleanOf p, bool ~ BooleanOf q, bool ~ BooleanOf r, IfB p, IfB q, IfB r) => IfB (p, q, r)Defined in Boolean-0.2.4 · Data.Boolean(bool ~ BooleanOf p, bool ~ BooleanOf q, bool ~ BooleanOf r, bool ~ BooleanOf s, IfB p, IfB q, IfB r, IfB s) => IfB (p, q, r, s)Defined in Boolean-0.2.4 · Data.Boolean
Expression-lifted conditional with condition last
Point-wise conditional
Generalized cropping, filling in mempty where the test yields false.
Types with equality. Minimum definition: (==*).
Instances7EqB, …
EqB IntegerDefined in Boolean-0.2.4 · Data.BooleanEqB BoolDefined in Boolean-0.2.4 · Data.BooleanEqB CharDefined in Boolean-0.2.4 · Data.BooleanEqB DoubleDefined in Boolean-0.2.4 · Data.BooleanEqB FloatDefined in Boolean-0.2.4 · Data.BooleanEqB IntDefined in Boolean-0.2.4 · Data.BooleanEqB a => EqB (z -> a)Defined in Boolean-0.2.4 · Data.Boolean
Types with inequality. Minimum definition: (<*).
Instances7OrdB, …
OrdB IntegerDefined in Boolean-0.2.4 · Data.BooleanOrdB BoolDefined in Boolean-0.2.4 · Data.BooleanOrdB CharDefined in Boolean-0.2.4 · Data.BooleanOrdB DoubleDefined in Boolean-0.2.4 · Data.BooleanOrdB FloatDefined in Boolean-0.2.4 · Data.BooleanOrdB IntDefined in Boolean-0.2.4 · Data.BooleanOrdB a => OrdB (z -> a)Defined in Boolean-0.2.4 · Data.Boolean
A generalized replacement for guards and chained ifs.
A generalized version of a case like control structure.