Boolean
Works with TypeScript boolean values.
This module exposes the native Boolean constructor together with helpers
for checking values, choosing between lazy branches, combining booleans with
logical operations, checking collections with every or some, ordering
booleans, and reducing boolean values.
Combinators
Combines two booleans using logical AND: self && that.
When to use
Use to require both boolean operands to be true.
Details
Supports both data-first and data-last forms.
Signature
declare const and: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean;}Example
(Combining booleans with AND)
import { Boolean } from "effect"
Boolean.and(true, true) // => trueBoolean.and(true, false) // => falseBoolean.and(false, true) // => falseBoolean.and(false, false) // => falseCombines two booleans using EQV (aka XNOR): !xor(self, that).
When to use
Use to accept when both boolean operands have the same truth value.
Signature
declare const eqv: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean;}Example
(Checking boolean equivalence)
import { Boolean } from "effect"
Boolean.eqv(true, true) // => trueBoolean.eqv(true, false) // => falseBoolean.eqv(false, true) // => falseBoolean.eqv(false, false) // => trueCombines two booleans using an implication: (!self || that).
When to use
Use to model logical implication between a condition and a consequence.
Signature
declare const implies: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean;}Example
(Checking boolean implication)
import { Boolean } from "effect"
Boolean.implies(true, true) // => trueBoolean.implies(true, false) // => falseBoolean.implies(false, true) // => trueBoolean.implies(false, false) // => trueCombines two booleans using NAND: !(self && that).
When to use
Use to negate a logical AND result.
Signature
declare const nand: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean;}Example
(Combining booleans with NAND)
import { Boolean } from "effect"
Boolean.nand(true, true) // => falseBoolean.nand(true, false) // => trueBoolean.nand(false, true) // => trueBoolean.nand(false, false) // => trueCombines two booleans using NOR: !(self || that).
When to use
Use to accept only when both boolean operands are false.
Signature
declare const nor: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean;}Example
(Combining booleans with NOR)
import { Boolean } from "effect"
Boolean.nor(true, true) // => falseBoolean.nor(true, false) // => falseBoolean.nor(false, true) // => falseBoolean.nor(false, false) // => trueNegates the given boolean: !self
When to use
Use to invert a boolean value.
Signature
declare function not(self: boolean): booleanExample
(Negating booleans)
import { Boolean } from "effect"
Boolean.not(true) // => falseBoolean.not(false) // => trueCombines two booleans using OR: self || that.
When to use
Use to accept when either boolean operand is true.
Signature
declare const or: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean;}Example
(Combining booleans with OR)
import { Boolean } from "effect"
Boolean.or(true, true) // => trueBoolean.or(true, false) // => trueBoolean.or(false, true) // => trueBoolean.or(false, false) // => falseCombines two booleans using XOR: (!self && that) || (self && !that).
When to use
Use to accept when exactly one boolean operand is true.
Signature
declare const xor: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean;}Example
(Combining booleans with XOR)
import { Boolean } from "effect"
Boolean.xor(true, true) // => falseBoolean.xor(true, false) // => trueBoolean.xor(false, true) // => trueBoolean.xor(false, false) // => falseConstructors
Exposes the global boolean constructor for JavaScript truthiness coercion.
When to use
Use to access native JavaScript truthiness coercion from the Effect module namespace.
Gotchas
This follows native truthiness rules. For example, non-empty strings such as
"false" coerce to true.
Signature
declare const Boolean: BooleanConstructorExample
(Coercing values to booleans)
import { Boolean } from "effect"
Boolean.Boolean(1) // => trueBoolean.Boolean("false") // => trueBoolean.Boolean(0) // => falseGuards
Checks whether a value is a boolean.
When to use
Use to validate unknown input and narrow it to boolean.
Signature
declare const isBoolean: (input: unknown) => input is booleanExample
(Checking for booleans)
import { Boolean } from "effect"
Boolean.isBoolean(true) // => trueBoolean.isBoolean("true") // => falseInstances
Equivalence
Equivalence instance for booleans using strict equality (===).
When to use
Use when checking boolean equality through APIs that accept an equivalence relation.
Signature
declare const Equivalence: Equ.Equivalence<boolean>Example
(Comparing booleans for equivalence)
import { Boolean } from "effect"
Boolean.Equivalence(true, true) // => trueBoolean.Equivalence(true, false) // => falseProvides an Order instance for boolean that allows comparing and sorting boolean values.
In this ordering, false is considered less than true.
When to use
Use when you need to sort or compare boolean values through APIs that accept
an ordering instance where false comes before true.
Signature
declare const Order: order.Order<boolean>Example
(Comparing booleans)
import { Boolean } from "effect"
Boolean.Order(false, true) // => -1Boolean.Order(true, false) // => 1Boolean.Order(true, true) // => 0Math
ReducerAnd
Reducer for combining booleans using AND.
When to use
Use to require every accumulated boolean to be true through APIs that
consume a Reducer.
Details
The initialValue is true, so combineAll([]) returns true.
Gotchas
combineAll uses the default left-to-right Reducer.make fold and does not
short-circuit on false.
See
Signature
declare const ReducerAnd: Reducer.Reducer<boolean>Reducer for combining booleans using OR.
When to use
Use to reduce boolean values where the result should be true if any
combined value is true.
Details
The initialValue is false.
See
- ReducerAnd for reducing with AND semantics
- some for checking an iterable directly
Signature
declare const ReducerOr: Reducer.Reducer<boolean>Pattern Matching
Chooses between two lazy branches based on a boolean value.
When to use
Use to choose between two lazy branches based on a boolean value.
Signature
declare const match: { <A, B = A>(options: { readonly onFalse: LazyArg<A>; readonly onTrue: LazyArg<B>; }): (value: boolean) => A | B; <A, B>(value: boolean, options: { readonly onFalse: LazyArg<A>; readonly onTrue: LazyArg<B>; }): A | B;}Example
(Pattern matching on booleans)
import { Boolean } from "effect"
Boolean.match(true, { onFalse: () => "It's false!", onTrue: () => "It's true!"}) // => "It's true!"Predicates
Checks whether every boolean in a collection is true.
When to use
Use to check that every boolean in an iterable is true.
See
- some for checking whether at least one value is
true - ReducerAnd for reducing booleans with AND through a
Reducer
Signature
declare function every(collection: Iterable<boolean>): booleanExample
(Checking every boolean)
import { Boolean } from "effect"
Boolean.every([true, true, true]) // => trueBoolean.every([true, false, true]) // => falseChecks whether at least one boolean in a collection is true.
When to use
Use to check that at least one boolean in an iterable is true.
See
Signature
declare function some(collection: Iterable<boolean>): booleanExample
(Checking some booleans)
import { Boolean } from "effect"
Boolean.some([true, false, true]) // => trueBoolean.some([false, false, false]) // => false