Skip to main content
Module

x/fun/monoid.ts>struct

A collection of algebraic data types, lenses, and schemables based on a light weight higher kinded type implementation. Written for deno.
Go to Latest
function struct
import { struct } from "https://deno.land/x/fun@v2.0.0-alpha.10/monoid.ts";

Create a struct Monoid from an struct of Monoids.

Examples

Example 1

import { struct, concatAll } from "./monoid.ts";
import * as N from "./number.ts";

const monoid = struct({
  sum: N.MonoidNumberSum,
  mult: N.MonoidNumberProduct
});
const concat = concatAll(monoid);

const result1 = concat([
  { sum: 1, mult: 2 },
  { sum: 3, mult: 4 }
]); // { sum: 4, mult: 8 }
const result2 = concat([]); // { sum: 0, mult: 1 }
const result3 = concat([{ sum: 1, mult: 2 }]); // { sum: 1, mult: 2 }

Type Parameters

O extends Record<string, any>

Parameters

monoids: [K in keyof O]: Monoid<O[K]>

Returns

Monoid<readonly [K in keyof O]: O[K]>