Hyperlinkv0.8.0-beta.28

Newtype

Newtype.makeReducerconsteffect/Newtype.ts:318
<N extends Newtype.Any>(
  reducer: Reducer.Reducer<Newtype.Carrier<N>>
): Reducer.Reducer<N>

Lifts a Reducer for the carrier type into a Reducer for the newtype.

When to use

Use when you need to reduce a collection of newtype-wrapped values with the carrier's reducer, without manually unwrapping.

Details

The returned reducer delegates to the provided carrier reducer.

Example (Reducing newtypes)

import { Newtype, Reducer } from "effect"

interface Score extends Newtype.Newtype<"Score", number> {}

const sum = Reducer.make<number>((a, b) => a + b, 0)
const reducer = Newtype.makeReducer<Score>(sum)
const iso = Newtype.makeIso<Score>()

const total = reducer.combineAll([iso.set(1), iso.set(2), iso.set(3)])
Newtype.value(total) // 6
constructorsmakeCombiner
Source effect/Newtype.ts:3182 lines
export const makeReducer: <N extends Newtype.Any>(reducer: Reducer.Reducer<Newtype.Carrier<N>>) => Reducer.Reducer<N> =
  cast