diff --git a/CHANGELOG.md b/CHANGELOG.md index dc3edbf..9a10357 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ **Note**: Gaps between patch versions are faulty/broken releases. **Note**: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice. +# 2.3.10 + # 2.3.9 Experimental modules require `fp-ts@^2.5.0`. diff --git a/package.json b/package.json index 4ac1d4d..3158103 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "monocle-ts", - "version": "2.3.9", + "version": "2.3.10", "description": "A porting of scala monocle library to TypeScript", "main": "lib/index.js", "module": "es6/index.js", diff --git a/src/Traversal.ts b/src/Traversal.ts index e8f6ae3..b1ffc39 100644 --- a/src/Traversal.ts +++ b/src/Traversal.ts @@ -19,7 +19,6 @@ import * as C from 'fp-ts/lib/Const' import { Either } from 'fp-ts/lib/Either' import { flow, identity, Predicate, Refinement } from 'fp-ts/lib/function' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from 'fp-ts/lib/HKT' -import * as I from 'fp-ts/lib/Identity' import { Monoid } from 'fp-ts/lib/Monoid' import { Option } from 'fp-ts/lib/Option' import { pipe } from 'fp-ts/lib/pipeable' @@ -156,17 +155,14 @@ export const composeOptional: (ab: Optional) => (sa: Traversal(f: (a: A) => A) => (sa: Traversal): ((s: S) => S) => { - return sa.modifyF(I.identity)(f) -} +export const modify = (f: (a: A) => A) => (sa: Traversal): ((s: S) => S) => + sa.modifyF(_.ApplicativeIdentity)(f) /** * @category combinators * @since 2.3.0 */ -export const set = (a: A): ((sa: Traversal) => (s: S) => S) => { - return modify(() => a) -} +export const set = (a: A): ((sa: Traversal) => (s: S) => S) => modify(() => a) /** * Return a `Traversal` from a `Traversal` focused on a nullable value. diff --git a/src/internal.ts b/src/internal.ts index 625f170..44f94ed 100644 --- a/src/internal.ts +++ b/src/internal.ts @@ -7,7 +7,7 @@ * * @since 2.3.0 */ -import { Applicative } from 'fp-ts/lib/Applicative' +import { Applicative, Applicative1 } from 'fp-ts/lib/Applicative' import * as RA from 'fp-ts/lib/ReadonlyArray' import * as RNEA from 'fp-ts/lib/ReadonlyNonEmptyArray' import * as RR from 'fp-ts/lib/ReadonlyRecord' @@ -25,6 +25,7 @@ import { Prism } from './Prism' import { Traversal } from './Traversal' import { At } from './At' import { NonEmptyArray } from 'fp-ts/lib/NonEmptyArray' +import { URI as IURI } from 'fp-ts/lib/Identity' // ------------------------------------------------------------------------------------- // Iso @@ -321,6 +322,16 @@ export function traversalComposeTraversal(ab: Traversal): (sa: Tr return (sa) => traversal((F: Applicative) => (f: (a: B) => HKT) => sa.modifyF(F)(ab.modifyF(F)(f))) } +/** @internal */ +export const ApplicativeIdentity: Applicative1 = { + URI: 'Identity', + map: (fa, f) => f(fa), + of: identity, + ap: + /* istanbul ignore next */ + (fab, fa) => fab(fa) +} + /** @internal */ export function fromTraversable(T: Traversable3): () => Traversal, A> /** @internal */