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 */