Skip to main content Link Search Menu Expand Document (external link)

Boolean overview

This module provides utility functions and type class instances for working with the boolean type in TypeScript. It includes functions for basic boolean operations, as well as type class instances for Equivalence and Order.

Added in v2.0.0


Table of contents


combinators

and

Combines two boolean using AND: self && that.

Signature

export declare const and: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean }

Example

import { and } from "effect/Boolean"

assert.deepStrictEqual(and(true, true), true)
assert.deepStrictEqual(and(true, false), false)
assert.deepStrictEqual(and(false, true), false)
assert.deepStrictEqual(and(false, false), false)

Added in v2.0.0

eqv

Combines two booleans using EQV (aka XNOR): !xor(self, that).

Signature

export declare const eqv: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean }

Example

import { eqv } from "effect/Boolean"

assert.deepStrictEqual(eqv(true, true), true)
assert.deepStrictEqual(eqv(true, false), false)
assert.deepStrictEqual(eqv(false, true), false)
assert.deepStrictEqual(eqv(false, false), true)

Added in v2.0.0

implies

Combines two booleans using an implication: (!self || that).

Signature

export declare const implies: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean }

Example

import { implies } from "effect/Boolean"

assert.deepStrictEqual(implies(true, true), true)
assert.deepStrictEqual(implies(true, false), false)
assert.deepStrictEqual(implies(false, true), true)
assert.deepStrictEqual(implies(false, false), true)

Added in v2.0.0

nand

Combines two boolean using NAND: !(self && that).

Signature

export declare const nand: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean }

Example

import { nand } from "effect/Boolean"

assert.deepStrictEqual(nand(true, true), false)
assert.deepStrictEqual(nand(true, false), true)
assert.deepStrictEqual(nand(false, true), true)
assert.deepStrictEqual(nand(false, false), true)

Added in v2.0.0

nor

Combines two booleans using NOR: !(self || that).

Signature

export declare const nor: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean }

Example

import { nor } from "effect/Boolean"

assert.deepStrictEqual(nor(true, true), false)
assert.deepStrictEqual(nor(true, false), false)
assert.deepStrictEqual(nor(false, true), false)
assert.deepStrictEqual(nor(false, false), true)

Added in v2.0.0

not

Negates the given boolean: !self

Signature

export declare const not: (self: boolean) => boolean

Example

import { not } from "effect/Boolean"

assert.deepStrictEqual(not(true), false)
assert.deepStrictEqual(not(false), true)

Added in v2.0.0

or

Combines two boolean using OR: self || that.

Signature

export declare const or: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean }

Example

import { or } from "effect/Boolean"

assert.deepStrictEqual(or(true, true), true)
assert.deepStrictEqual(or(true, false), true)
assert.deepStrictEqual(or(false, true), true)
assert.deepStrictEqual(or(false, false), false)

Added in v2.0.0

xor

Combines two booleans using XOR: (!self && that) || (self && !that).

Signature

export declare const xor: { (that: boolean): (self: boolean) => boolean; (self: boolean, that: boolean): boolean }

Example

import { xor } from "effect/Boolean"

assert.deepStrictEqual(xor(true, true), false)
assert.deepStrictEqual(xor(true, false), true)
assert.deepStrictEqual(xor(false, true), true)
assert.deepStrictEqual(xor(false, false), false)

Added in v2.0.0

guards

isBoolean

Tests if a value is a boolean.

Signature

export declare const isBoolean: (input: unknown) => input is boolean

Example

import { isBoolean } from "effect/Boolean"

assert.deepStrictEqual(isBoolean(true), true)
assert.deepStrictEqual(isBoolean("true"), false)

Added in v2.0.0

instances

Equivalence

Signature

export declare const Equivalence: equivalence.Equivalence<boolean>

Added in v2.0.0

Order

Signature

export declare const Order: order.Order<boolean>

Added in v2.0.0

pattern matching

match

This function returns the result of either of the given functions depending on the value of the boolean parameter. It is useful when you have to run one of two functions depending on the boolean value.

Signature

export 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

import * as B from "effect/Boolean"

assert.deepStrictEqual(B.match(true, { onFalse: () => "It's false!", onTrue: () => "It's true!" }), "It's true!")

Added in v2.0.0

utils

every

This utility function is used to check if all the elements in a collection of boolean values are true.

Signature

export declare const every: (collection: Iterable<boolean>) => boolean

Example

import { every } from "effect/Boolean"

assert.deepStrictEqual(every([true, true, true]), true)
assert.deepStrictEqual(every([true, false, true]), false)

Added in v2.0.0

some

This utility function is used to check if at least one of the elements in a collection of boolean values is true.

Signature

export declare const some: (collection: Iterable<boolean>) => boolean

Example

import { some } from "effect/Boolean"

assert.deepStrictEqual(some([true, false, true]), true)
assert.deepStrictEqual(some([false, false, false]), false)

Added in v2.0.0