import { Iso } from 'monocle-ts' import { coerce as coerceFromNewtype, Const } from './newtypes' export type Named = Const export const name = (a: A) => (f: (namedA: Named) => T): T => f((a as unknown) as Named) export const the = coerceFromNewtype export const coerce = >(a: A) => (a as unknown) as N export const iso = () => new Iso, T>(the, coerce)