diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7344174f7..2fc878315 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,12 @@
**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.6.5
+
+- **Polish**
+ - export a pipeable `wither` function from all modules which admit a `Witherable` instance (@gcanti)
+ - export a pipeable `wilt` function from all modules which admit a `Witherable` instance (@gcanti)
+
# 2.6.4
- **Bug Fix**
diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md
index 441fd6e6c..2f9a9d7d0 100644
--- a/docs/modules/Array.ts.md
+++ b/docs/modules/Array.ts.md
@@ -50,6 +50,9 @@ Added in v2.0.0
- [chain](#chain)
- [chainFirst](#chainfirst)
- [flatten](#flatten)
+- [Whitherable](#whitherable)
+ - [wilt](#wilt)
+ - [wither](#wither)
- [combinators](#combinators)
- [chop](#chop)
- [copy](#copy)
@@ -461,6 +464,28 @@ assert.deepStrictEqual(flatten([[1], [2], [3]]), [1, 2, 3])
Added in v2.0.0
+# Whitherable
+
+## wilt
+
+**Signature**
+
+```ts
+export declare const wilt: PipeableWilt1<'Array'>
+```
+
+Added in v2.6.5
+
+## wither
+
+**Signature**
+
+```ts
+export declare const wither: PipeableWither1<'Array'>
+```
+
+Added in v2.6.5
+
# combinators
## chop
diff --git a/docs/modules/Option.ts.md b/docs/modules/Option.ts.md
index 39c0e18ac..0d6a4b9f6 100644
--- a/docs/modules/Option.ts.md
+++ b/docs/modules/Option.ts.md
@@ -53,6 +53,9 @@ Added in v2.0.0
- [Traversable](#traversable)
- [sequence](#sequence)
- [traverse](#traverse)
+- [Whitherable](#whitherable)
+ - [wilt](#wilt)
+ - [wither](#wither)
- [combinators](#combinators)
- [mapNullable](#mapnullable)
- [constructors](#constructors)
@@ -370,6 +373,28 @@ export declare const traverse: PipeableTraverse1<'Option'>
Added in v2.6.3
+# Whitherable
+
+## wilt
+
+**Signature**
+
+```ts
+export declare const wilt: PipeableWilt1<'Option'>
+```
+
+Added in v2.6.5
+
+## wither
+
+**Signature**
+
+```ts
+export declare const wither: PipeableWither1<'Option'>
+```
+
+Added in v2.6.5
+
# combinators
## mapNullable
diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md
index 44b71166a..5193a892c 100644
--- a/docs/modules/ReadonlyArray.ts.md
+++ b/docs/modules/ReadonlyArray.ts.md
@@ -50,6 +50,9 @@ Added in v2.5.0
- [chain](#chain)
- [chainFirst](#chainfirst)
- [flatten](#flatten)
+- [Whitherable](#whitherable)
+ - [wilt](#wilt)
+ - [wither](#wither)
- [combinators](#combinators)
- [chop](#chop)
- [difference](#difference)
@@ -467,6 +470,28 @@ assert.deepStrictEqual(flatten([[1], [2], [3]]), [1, 2, 3])
Added in v2.5.0
+# Whitherable
+
+## wilt
+
+**Signature**
+
+```ts
+export declare const wilt: PipeableWilt1<'ReadonlyArray'>
+```
+
+Added in v2.6.5
+
+## wither
+
+**Signature**
+
+```ts
+export declare const wither: PipeableWither1<'ReadonlyArray'>
+```
+
+Added in v2.6.5
+
# combinators
## chop
diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md
index 1f9270a32..633466981 100644
--- a/docs/modules/ReadonlyRecord.ts.md
+++ b/docs/modules/ReadonlyRecord.ts.md
@@ -24,6 +24,9 @@ Added in v2.5.0
- [foldMap](#foldmap)
- [reduce](#reduce)
- [reduceRight](#reduceright)
+- [Whitherable](#whitherable)
+ - [wilt](#wilt)
+ - [wither](#wither)
- [combinators](#combinators)
- [deleteAt](#deleteat)
- [filterMapWithIndex](#filtermapwithindex)
@@ -187,6 +190,28 @@ export declare const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Rea
Added in v2.5.0
+# Whitherable
+
+## wilt
+
+**Signature**
+
+```ts
+export declare const wilt: PipeableWilt1<'ReadonlyRecord'>
+```
+
+Added in v2.6.5
+
+## wither
+
+**Signature**
+
+```ts
+export declare const wither: PipeableWither1<'ReadonlyRecord'>
+```
+
+Added in v2.6.5
+
# combinators
## deleteAt
diff --git a/docs/modules/Record.ts.md b/docs/modules/Record.ts.md
index dce573470..a6881e048 100644
--- a/docs/modules/Record.ts.md
+++ b/docs/modules/Record.ts.md
@@ -24,6 +24,9 @@ Added in v2.0.0
- [foldMap](#foldmap)
- [reduce](#reduce)
- [reduceRight](#reduceright)
+- [Whitherable](#whitherable)
+ - [wilt](#wilt)
+ - [wither](#wither)
- [model](#model)
- [URI](#uri)
- [URI (type alias)](#uri-type-alias)
@@ -176,6 +179,28 @@ export declare const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Rec
Added in v2.0.0
+# Whitherable
+
+## wilt
+
+**Signature**
+
+```ts
+export declare const wilt: PipeableWilt1<'Record'>
+```
+
+Added in v2.6.5
+
+## wither
+
+**Signature**
+
+```ts
+export declare const wither: PipeableWither1<'Record'>
+```
+
+Added in v2.6.5
+
# model
## URI
diff --git a/docs/modules/Witherable.ts.md b/docs/modules/Witherable.ts.md
index 008f86dc9..4b51ad609 100644
--- a/docs/modules/Witherable.ts.md
+++ b/docs/modules/Witherable.ts.md
@@ -35,6 +35,16 @@ Added in v2.0.0
- [Witherable2C (interface)](#witherable2c-interface)
- [Witherable3 (interface)](#witherable3-interface)
- [utils](#utils)
+ - [PipeableWilt (interface)](#pipeablewilt-interface)
+ - [PipeableWilt1 (interface)](#pipeablewilt1-interface)
+ - [PipeableWilt2 (interface)](#pipeablewilt2-interface)
+ - [PipeableWilt2C (interface)](#pipeablewilt2c-interface)
+ - [PipeableWilt3 (interface)](#pipeablewilt3-interface)
+ - [PipeableWither (interface)](#pipeablewither-interface)
+ - [PipeableWither1 (interface)](#pipeablewither1-interface)
+ - [PipeableWither2 (interface)](#pipeablewither2-interface)
+ - [PipeableWither2C (interface)](#pipeablewither2c-interface)
+ - [PipeableWither3 (interface)](#pipeablewither3-interface)
- [Wilt (interface)](#wilt-interface)
- [Wilt1 (interface)](#wilt1-interface)
- [Wilt2 (interface)](#wilt2-interface)
@@ -124,6 +134,268 @@ Added in v2.0.0
# utils
+## PipeableWilt (interface)
+
+**Signature**
+
+```ts
+export interface PipeableWilt {
+ (F: Applicative3): (
+ f: (a: A) => Kind3>
+ ) => (wa: HKT) => Kind3, HKT>>
+ (F: Applicative3C): (
+ f: (a: A) => Kind3>
+ ) => (wa: HKT) => Kind3, HKT>>
+ (F: Applicative2): (
+ f: (a: A) => Kind2>
+ ) => (wa: HKT) => Kind2, HKT>>
+ (F: Applicative2C): (
+ f: (a: A) => Kind2>
+ ) => (wa: HKT) => Kind2, HKT>>
+ (F: Applicative1): (
+ f: (a: A) => Kind>
+ ) => (wa: HKT) => Kind, HKT>>
+ (F: Applicative): (
+ f: (a: A) => HKT>
+ ) => (wa: HKT) => HKT, HKT>>
+}
+```
+
+Added in v2.6.5
+
+## PipeableWilt1 (interface)
+
+**Signature**
+
+```ts
+export interface PipeableWilt1 {
+ (F: Applicative3): (
+ f: (a: A) => Kind3>
+ ) => (wa: Kind) => Kind3, Kind>>
+ (F: Applicative3C): (
+ f: (a: A) => Kind3>
+ ) => (wa: Kind) => Kind3, Kind>>
+ (F: Applicative2): (
+ f: (a: A) => Kind2>
+ ) => (wa: Kind) => Kind2, Kind>>
+ (F: Applicative2C): (
+ f: (a: A) => Kind2>
+ ) => (wa: Kind) => Kind2, Kind>>
+ (F: Applicative1): (
+ f: (a: A) => Kind>
+ ) => (wa: Kind) => Kind, Kind>>
+ (F: Applicative): (
+ f: (a: A) => HKT>
+ ) => (wa: Kind) => HKT, Kind>>
+}
+```
+
+Added in v2.6.5
+
+## PipeableWilt2 (interface)
+
+**Signature**
+
+```ts
+export interface PipeableWilt2 {
+ (F: Applicative3): (
+ f: (a: A) => Kind3>
+ ) => (wa: Kind2) => Kind3, Kind2>>
+ (F: Applicative2): (
+ f: (a: A) => Kind2>
+ ) => (wa: Kind2) => Kind2, Kind2>>
+ (F: Applicative2C): (
+ f: (a: A) => Kind2>
+ ) => (wa: Kind2) => Kind2, Kind2>>
+ (F: Applicative1): (
+ f: (a: A) => Kind>
+ ) => (wa: Kind2) => Kind, Kind2>>
+ (F: Applicative): (
+ f: (a: A) => HKT>
+ ) => (wa: Kind2) => HKT, Kind2>>
+}
+```
+
+Added in v2.6.5
+
+## PipeableWilt2C (interface)
+
+**Signature**
+
+```ts
+export interface PipeableWilt2C {
+ (F: Applicative3): (
+ f: (a: A) => Kind3>
+ ) => (wa: Kind2) => Kind3, Kind2>>
+ (F: Applicative2): (
+ f: (a: A) => Kind2>
+ ) => (wa: Kind2) => Kind2, Kind2>>
+ (F: Applicative2C): (
+ f: (a: A) => Kind2>
+ ) => (wa: Kind2) => Kind2, Kind2>>
+ (F: Applicative1): (
+ f: (a: A) => Kind>
+ ) => (wa: Kind2) => Kind, Kind2>>
+ (F: Applicative): (
+ f: (a: A) => HKT>
+ ) => (wa: Kind2) => HKT, Kind2>>
+}
+```
+
+Added in v2.6.5
+
+## PipeableWilt3 (interface)
+
+**Signature**
+
+```ts
+export interface PipeableWilt3 {
+ (F: Applicative3): (
+ f: (a: A) => Kind3>
+ ) => (wa: Kind3) => Kind3, Kind3>>
+ (F: Applicative2): (
+ f: (a: A) => Kind2>
+ ) => (wa: Kind3) => Kind2, Kind3>>
+ (F: Applicative2C): (
+ f: (a: A) => Kind2>
+ ) => (wa: Kind3) => Kind2, Kind3>>
+ (F: Applicative1): (
+ f: (a: A) => Kind>
+ ) => (wa: Kind3) => Kind, Kind3>>
+ (F: Applicative): (
+ f: (a: A) => HKT>
+ ) => (wa: Kind3) => HKT, Kind3>>
+}
+```
+
+Added in v2.6.5
+
+## PipeableWither (interface)
+
+**Signature**
+
+```ts
+export interface PipeableWither {
+ (F: Applicative3): (
+ f: (a: A) => Kind3>
+ ) => (ta: HKT) => Kind3>
+ (F: Applicative3C): (
+ f: (a: A) => Kind3>
+ ) => (ta: HKT) => Kind3>
+ (F: Applicative2): (
+ f: (a: A) => Kind2>
+ ) => (ta: HKT) => Kind2>
+ (F: Applicative2C): (
+ f: (a: A) => Kind2>
+ ) => (ta: HKT) => Kind2>
+ (F: Applicative1): (f: (a: A) => Kind>) => (ta: HKT) => Kind>
+ (F: Applicative): (f: (a: A) => HKT>) => (ta: HKT) => HKT>
+}
+```
+
+Added in v2.6.5
+
+## PipeableWither1 (interface)
+
+**Signature**
+
+```ts
+export interface PipeableWither1 {
+ (F: Applicative3): (
+ f: (a: A) => Kind3>
+ ) => (ta: Kind) => Kind3>
+ (F: Applicative3C): (
+ f: (a: A) => Kind3>
+ ) => (ta: Kind) => Kind3