index overview

fp-ts bindings for @unsplash/sum-types.

Added in v0.1.0


Table of contents


utils

getEq

Given an Eq instance for each member of A for which there’s a value, returns an Eq instance for all A.

Signature

export declare const getEq: <A extends Sum.AnyMember>(eqs: Eqs<A>) => Eq<A>

Example

import { Member, create } from '@unsplash/sum-types'
import { getEq } from '@unsplash/sum-types-fp-ts'
import * as Num from 'fp-ts/number'

type Weather = Member<'Sun'> | Member<'Rain', number>

const {
  mk: { Sun, Rain },
  match,
} = create<Weather>()

const eqWeather = getEq<Weather>({
  Rain: Num.Eq,
})

assert.strictEqual(eqWeather.equals(Rain(1), Rain(1)), true)
assert.strictEqual(eqWeather.equals(Rain(1), Sun(null)), false)
assert.strictEqual(eqWeather.equals(Rain(1), Rain(2)), false)

Added in v0.1.0

getOrd

Given an Ord instance for each member of A for which there’s a value, returns an Ord instance for all A.

Note that whereas Haskell derives Ord across members based upon definition order, this function instead does so alphabetically.

Signature

export declare const getOrd: <A extends Sum.AnyMember>(ords: Ords<A>) => Ord<A>

Example

import { Member, create } from '@unsplash/sum-types'
import { getOrd } from '@unsplash/sum-types-fp-ts'
import * as Num from 'fp-ts/number'

type Weather = Member<'Sun'> | Member<'Rain', number>

const {
  mk: { Sun, Rain },
  match,
} = create<Weather>()

const ordWeather = getOrd<Weather>({
  Rain: Num.Ord,
})

assert.strictEqual(ordWeather.compare(Rain(1), Rain(1)), 0)
assert.strictEqual(ordWeather.compare(Rain(1), Sun(null)), -1)
assert.strictEqual(ordWeather.compare(Rain(1), Rain(2)), -1)
assert.strictEqual(ordWeather.compare(Rain(2), Rain(1)), 1)

Added in v0.1.0

getShow

Given a Show instance for each member of A for which there’s a value, returns a Show instance for all A.

Signature

export declare const getShow: <A extends Sum.AnyMember>(shows: Shows<A>) => Show<A>

Example

import { Member, create } from '@unsplash/sum-types'
import { getShow } from '@unsplash/sum-types-fp-ts'
import * as Num from 'fp-ts/number'

type Weather = Member<'Sun'> | Member<'Rain', number>

const {
  mk: { Sun, Rain },
  match,
} = create<Weather>()

const showWeather = getShow<Weather>({
  Rain: Num.Show,
})

assert.strictEqual(showWeather.show(Sun(null)), 'Sun')
assert.strictEqual(showWeather.show(Rain(1)), 'Rain(1)')

Added in v0.1.0


This site uses Just the Docs, a documentation theme for Jekyll.