Showing preview only (4,138K chars total). Download the full file or copy to clipboard to get everything.
Repository: gcanti/fp-ts
Branch: master
Commit: 09045f5819af
Files: 429
Total size: 3.9 MB
Directory structure:
gitextract_97f0v62q/
├── .editorconfig
├── .eslintrc.json
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── Bug_report.md
│ │ ├── Documentation.md
│ │ └── Feature_request.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ └── main.yml
├── .gitignore
├── .prettierrc
├── .vscode/
│ └── settings.json
├── CHANGELOG.md
├── Do.md
├── LICENSE
├── README.md
├── code2comment.html
├── docs/
│ ├── _config.yml
│ ├── _sass/
│ │ └── custom/
│ │ └── custom.scss
│ ├── ecosystem.md
│ ├── guides/
│ │ ├── HKT.md
│ │ ├── code-conventions.md
│ │ ├── do-notation.md
│ │ ├── index.md
│ │ ├── purescript.md
│ │ └── upgrade-to-v2.md
│ ├── index.md
│ ├── learning-resources.md
│ └── modules/
│ ├── Alt.ts.md
│ ├── Alternative.ts.md
│ ├── Applicative.ts.md
│ ├── Apply.ts.md
│ ├── Array.ts.md
│ ├── Bifunctor.ts.md
│ ├── BooleanAlgebra.ts.md
│ ├── Bounded.ts.md
│ ├── BoundedDistributiveLattice.ts.md
│ ├── BoundedJoinSemilattice.ts.md
│ ├── BoundedLattice.ts.md
│ ├── BoundedMeetSemilattice.ts.md
│ ├── Category.ts.md
│ ├── Chain.ts.md
│ ├── ChainRec.ts.md
│ ├── Choice.ts.md
│ ├── Comonad.ts.md
│ ├── Compactable.ts.md
│ ├── Console.ts.md
│ ├── Const.ts.md
│ ├── Contravariant.ts.md
│ ├── Date.ts.md
│ ├── DistributiveLattice.ts.md
│ ├── Either.ts.md
│ ├── EitherT.ts.md
│ ├── Endomorphism.ts.md
│ ├── Eq.ts.md
│ ├── Extend.ts.md
│ ├── Field.ts.md
│ ├── Filterable.ts.md
│ ├── FilterableWithIndex.ts.md
│ ├── Foldable.ts.md
│ ├── FoldableWithIndex.ts.md
│ ├── FromEither.ts.md
│ ├── FromIO.ts.md
│ ├── FromReader.ts.md
│ ├── FromState.ts.md
│ ├── FromTask.ts.md
│ ├── FromThese.ts.md
│ ├── Functor.ts.md
│ ├── FunctorWithIndex.ts.md
│ ├── Group.ts.md
│ ├── HKT.ts.md
│ ├── HeytingAlgebra.ts.md
│ ├── IO.ts.md
│ ├── IOEither.ts.md
│ ├── IOOption.ts.md
│ ├── IORef.ts.md
│ ├── Identity.ts.md
│ ├── Invariant.ts.md
│ ├── JoinSemilattice.ts.md
│ ├── Json.ts.md
│ ├── Lattice.ts.md
│ ├── Magma.ts.md
│ ├── Map.ts.md
│ ├── MeetSemilattice.ts.md
│ ├── Monad.ts.md
│ ├── MonadIO.ts.md
│ ├── MonadTask.ts.md
│ ├── MonadThrow.ts.md
│ ├── Monoid.ts.md
│ ├── NaturalTransformation.ts.md
│ ├── NonEmptyArray.ts.md
│ ├── Option.ts.md
│ ├── OptionT.ts.md
│ ├── Ord.ts.md
│ ├── Ordering.ts.md
│ ├── Pointed.ts.md
│ ├── Predicate.ts.md
│ ├── Profunctor.ts.md
│ ├── Random.ts.md
│ ├── Reader.ts.md
│ ├── ReaderEither.ts.md
│ ├── ReaderIO.ts.md
│ ├── ReaderT.ts.md
│ ├── ReaderTask.ts.md
│ ├── ReaderTaskEither.ts.md
│ ├── ReadonlyArray.ts.md
│ ├── ReadonlyMap.ts.md
│ ├── ReadonlyNonEmptyArray.ts.md
│ ├── ReadonlyRecord.ts.md
│ ├── ReadonlySet.ts.md
│ ├── ReadonlyTuple.ts.md
│ ├── Record.ts.md
│ ├── Refinement.ts.md
│ ├── Ring.ts.md
│ ├── Semigroup.ts.md
│ ├── Semigroupoid.ts.md
│ ├── Semiring.ts.md
│ ├── Separated.ts.md
│ ├── Set.ts.md
│ ├── Show.ts.md
│ ├── State.ts.md
│ ├── StateReaderTaskEither.ts.md
│ ├── StateT.ts.md
│ ├── Store.ts.md
│ ├── Strong.ts.md
│ ├── Task.ts.md
│ ├── TaskEither.ts.md
│ ├── TaskOption.ts.md
│ ├── TaskThese.ts.md
│ ├── These.ts.md
│ ├── TheseT.ts.md
│ ├── Traced.ts.md
│ ├── Traversable.ts.md
│ ├── TraversableWithIndex.ts.md
│ ├── Tree.ts.md
│ ├── Tuple.ts.md
│ ├── Unfoldable.ts.md
│ ├── ValidationT.ts.md
│ ├── Witherable.ts.md
│ ├── Writer.ts.md
│ ├── WriterT.ts.md
│ ├── Zero.ts.md
│ ├── boolean.ts.md
│ ├── function.ts.md
│ ├── index.md
│ ├── index.ts.md
│ ├── number.ts.md
│ ├── pipeable.ts.md
│ ├── string.ts.md
│ ├── struct.ts.md
│ └── void.ts.md
├── docs-ts.json
├── dtslint/
│ ├── Applicative.ts
│ ├── Apply.ts
│ ├── Array.ts
│ ├── Console.ts
│ ├── Const.ts
│ ├── Either.ts
│ ├── Eq.ts
│ ├── Functor.ts
│ ├── IO.ts
│ ├── IOEither.ts
│ ├── Identity.ts
│ ├── Json.ts
│ ├── Map.ts
│ ├── Monoid.ts
│ ├── NonEmptyArray.ts
│ ├── Option.ts
│ ├── Ord.ts
│ ├── Reader.ts
│ ├── ReaderEither.ts
│ ├── ReaderT.ts
│ ├── ReaderTask.ts
│ ├── ReaderTaskEither.ts
│ ├── ReadonlyArray.ts
│ ├── ReadonlyMap.ts
│ ├── ReadonlyNonEmptyArray.ts
│ ├── ReadonlyRecord.ts
│ ├── ReadonlySet.ts
│ ├── Record.ts
│ ├── Ring.ts
│ ├── Semigroup.ts
│ ├── Set.ts
│ ├── Show.ts
│ ├── StateReaderTaskEither.ts
│ ├── Task.ts
│ ├── TaskEither.ts
│ ├── TaskOption.ts
│ ├── Traversable.ts
│ ├── Tree.ts
│ ├── constrained.ts
│ ├── function.ts
│ ├── index.d.ts
│ ├── index.ts
│ ├── pipeable.ts
│ └── tsconfig.json
├── examples/
│ ├── fp-ts-to-the-max-I.ts
│ ├── fp-ts-to-the-max-II.ts
│ └── tsconfig.json
├── package.json
├── perf/
│ ├── Either/
│ │ └── sequenceArray.ts
│ ├── IO/
│ │ └── sequenceArray.ts
│ ├── Option/
│ │ └── sequenceArray.ts
│ ├── ReaderTask/
│ │ └── traverseReadonlyArrayWithIndexSeq.ts
│ ├── ReaderTaskEither/
│ │ └── traverseReadonlyArrayWithIndexSeq.ts
│ ├── ReadonlyNonEmptyArray.ts/
│ │ └── reverse.ts
│ ├── StateReaderTaskEither/
│ │ └── sequenceArray.ts
│ ├── Task/
│ │ ├── sequenceArray.ts
│ │ ├── stack.ts
│ │ └── traverseReadonlyArrayWithIndexSeq.ts
│ ├── TaskEither/
│ │ └── traverseReadonlyArrayWithIndexSeq.ts
│ ├── TaskOption/
│ │ └── traverseReadonlyArrayWithIndexSeq.ts
│ ├── TaskOption.ts/
│ │ └── traverseReadonlyArrayWithIndexSeq.ts
│ └── function/
│ ├── flow.ts
│ └── pipe.ts
├── scripts/
│ ├── FileSystem.ts
│ ├── build.ts
│ ├── linter.ts
│ ├── pre-publish.ts
│ ├── release.ts
│ └── run.ts
├── src/
│ ├── Alt.ts
│ ├── Alternative.ts
│ ├── Applicative.ts
│ ├── Apply.ts
│ ├── Array.ts
│ ├── Bifunctor.ts
│ ├── BooleanAlgebra.ts
│ ├── Bounded.ts
│ ├── BoundedDistributiveLattice.ts
│ ├── BoundedJoinSemilattice.ts
│ ├── BoundedLattice.ts
│ ├── BoundedMeetSemilattice.ts
│ ├── Category.ts
│ ├── Chain.ts
│ ├── ChainRec.ts
│ ├── Choice.ts
│ ├── Comonad.ts
│ ├── Compactable.ts
│ ├── Console.ts
│ ├── Const.ts
│ ├── Contravariant.ts
│ ├── Date.ts
│ ├── DistributiveLattice.ts
│ ├── Either.ts
│ ├── EitherT.ts
│ ├── Endomorphism.ts
│ ├── Eq.ts
│ ├── Extend.ts
│ ├── Field.ts
│ ├── Filterable.ts
│ ├── FilterableWithIndex.ts
│ ├── Foldable.ts
│ ├── FoldableWithIndex.ts
│ ├── FromEither.ts
│ ├── FromIO.ts
│ ├── FromReader.ts
│ ├── FromState.ts
│ ├── FromTask.ts
│ ├── FromThese.ts
│ ├── Functor.ts
│ ├── FunctorWithIndex.ts
│ ├── Group.ts
│ ├── HKT.ts
│ ├── HeytingAlgebra.ts
│ ├── IO.ts
│ ├── IOEither.ts
│ ├── IOOption.ts
│ ├── IORef.ts
│ ├── Identity.ts
│ ├── Invariant.ts
│ ├── JoinSemilattice.ts
│ ├── Json.ts
│ ├── Lattice.ts
│ ├── Magma.ts
│ ├── Map.ts
│ ├── MeetSemilattice.ts
│ ├── Monad.ts
│ ├── MonadIO.ts
│ ├── MonadTask.ts
│ ├── MonadThrow.ts
│ ├── Monoid.ts
│ ├── NaturalTransformation.ts
│ ├── NonEmptyArray.ts
│ ├── Option.ts
│ ├── OptionT.ts
│ ├── Ord.ts
│ ├── Ordering.ts
│ ├── Pointed.ts
│ ├── Predicate.ts
│ ├── Profunctor.ts
│ ├── Random.ts
│ ├── Reader.ts
│ ├── ReaderEither.ts
│ ├── ReaderIO.ts
│ ├── ReaderT.ts
│ ├── ReaderTask.ts
│ ├── ReaderTaskEither.ts
│ ├── ReadonlyArray.ts
│ ├── ReadonlyMap.ts
│ ├── ReadonlyNonEmptyArray.ts
│ ├── ReadonlyRecord.ts
│ ├── ReadonlySet.ts
│ ├── ReadonlyTuple.ts
│ ├── Record.ts
│ ├── Refinement.ts
│ ├── Ring.ts
│ ├── Semigroup.ts
│ ├── Semigroupoid.ts
│ ├── Semiring.ts
│ ├── Separated.ts
│ ├── Set.ts
│ ├── Show.ts
│ ├── State.ts
│ ├── StateReaderTaskEither.ts
│ ├── StateT.ts
│ ├── Store.ts
│ ├── Strong.ts
│ ├── Task.ts
│ ├── TaskEither.ts
│ ├── TaskOption.ts
│ ├── TaskThese.ts
│ ├── These.ts
│ ├── TheseT.ts
│ ├── Traced.ts
│ ├── Traversable.ts
│ ├── TraversableWithIndex.ts
│ ├── Tree.ts
│ ├── Tuple.ts
│ ├── Unfoldable.ts
│ ├── ValidationT.ts
│ ├── Witherable.ts
│ ├── Writer.ts
│ ├── WriterT.ts
│ ├── Zero.ts
│ ├── boolean.ts
│ ├── function.ts
│ ├── index.ts
│ ├── internal.ts
│ ├── number.ts
│ ├── pipeable.ts
│ ├── string.ts
│ ├── struct.ts
│ └── void.ts
├── test/
│ ├── Alternative.ts
│ ├── Applicative.ts
│ ├── Apply.ts
│ ├── Array.ts
│ ├── BooleanAlgebra.ts
│ ├── Bounded.ts
│ ├── BoundedDistributiveLattice.ts
│ ├── Choice.ts
│ ├── Compactable.ts
│ ├── Console.ts
│ ├── Const.ts
│ ├── Date.ts
│ ├── Either.ts
│ ├── EitherT.ts
│ ├── Endomorphism.ts
│ ├── Eq.ts
│ ├── Field.ts
│ ├── Filterable.ts
│ ├── Foldable.ts
│ ├── FoldableWithIndex.ts
│ ├── Functor.ts
│ ├── FunctorWithIndex.ts
│ ├── IO.ts
│ ├── IOEither.ts
│ ├── IOOption.ts
│ ├── IORef.ts
│ ├── Identity.ts
│ ├── Json.ts
│ ├── Magma.ts
│ ├── Map.ts
│ ├── Monoid.ts
│ ├── NonEmptyArray.ts
│ ├── Option.ts
│ ├── OptionT.ts
│ ├── Ord.ts
│ ├── Ordering.ts
│ ├── Predicate.ts
│ ├── Random.ts
│ ├── Reader.ts
│ ├── ReaderEither.ts
│ ├── ReaderIO.ts
│ ├── ReaderT.ts
│ ├── ReaderTask.ts
│ ├── ReaderTaskEither.ts
│ ├── ReadonlyArray.ts
│ ├── ReadonlyMap.ts
│ ├── ReadonlyNonEmptyArray.ts
│ ├── ReadonlyRecord.ts
│ ├── ReadonlySet.ts
│ ├── ReadonlyTuple.ts
│ ├── Record.ts
│ ├── Refinement.ts
│ ├── Ring.ts
│ ├── Semigroup.ts
│ ├── Separated.ts
│ ├── Set.ts
│ ├── Show.ts
│ ├── State.ts
│ ├── StateReaderTaskEither.ts
│ ├── Store.ts
│ ├── Strong.ts
│ ├── Task.ts
│ ├── TaskEither.ts
│ ├── TaskOption.ts
│ ├── TaskThese.ts
│ ├── These.ts
│ ├── Traced.ts
│ ├── Traversable.ts
│ ├── Tree.ts
│ ├── Tuple.ts
│ ├── ValidationT.ts
│ ├── Witherable.ts
│ ├── Writer.ts
│ ├── boolean.ts
│ ├── function.ts
│ ├── index.ts
│ ├── number.ts
│ ├── pipeable.ts
│ ├── string.ts
│ ├── struct.ts
│ └── util.ts
├── tsconfig.build-es6.json
├── tsconfig.build.json
├── tsconfig.eslint.json
├── tsconfig.json
└── vite.config.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
[*]
indent_style = space
indent_size = 2
================================================
FILE: .eslintrc.json
================================================
{
"parserOptions": {
"project": "./tsconfig.eslint.json"
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"plugins": ["deprecation", "import", "simple-import-sort"],
"rules": {
"@typescript-eslint/array-type": ["warn", { "default": "generic", "readonly": "generic" }],
"@typescript-eslint/prefer-readonly": "warn",
"@typescript-eslint/member-delimiter-style": 0,
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/ban-types": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-empty-interface": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
"prefer-rest-params": "off",
"prefer-spread": "off",
"deprecation/deprecation": "off",
"import/first": "error",
"import/no-cycle": "error",
"import/newline-after-import": "error",
"import/no-duplicates": "error",
"import/no-unresolved": "off",
"import/order": "off",
"simple-import-sort/imports": "error",
"no-restricted-syntax": [
"error",
{
"selector": "CallExpression[callee.property.name='push'] > SpreadElement.arguments",
"message": "Do not use spread arguments in Array.push"
}
]
}
}
================================================
FILE: .github/FUNDING.yml
================================================
github: [gcanti]
================================================
FILE: .github/ISSUE_TEMPLATE/Bug_report.md
================================================
---
name: "\U0001F41B Bug report"
about: Create a report to help make fp-ts better
---
## 🐛 Bug report
### Current Behavior
<!-- If applicable, add screenshots to help explain your problem. -->
### Expected behavior
<!-- A clear and concise description of what you expected to happen. -->
### Reproducible example
### Suggested solution(s)
<!-- How could we solve this bug? What changes would need to made to fp-ts? -->
### Additional context
<!-- Add any other context about the problem here. -->
### Your environment
Which versions of fp-ts are affected by this issue? Did this work in previous versions of fp-ts?
<!-- PLEASE FILL THIS OUT -->
| Software | Version(s) |
| ---------- | ---------- |
| fp-ts | |
| TypeScript | |
================================================
FILE: .github/ISSUE_TEMPLATE/Documentation.md
================================================
---
name: "\U0001F41B Documentation"
about: Improvements or suggestions of fp-ts documentation
---
## 📖 Documentation
================================================
FILE: .github/ISSUE_TEMPLATE/Feature_request.md
================================================
---
name: "\U0001F680Feature request"
about: Suggest an idea for fp-ts
---
## 🚀 Feature request
### Current Behavior
<!-- A clear and concise description of what is the current behavior / use. -->
### Desired Behavior
<!-- A clear and concise description of what you want to happen. -->
### Suggested Solution
<!-- Suggest a solution that the community/maintainers/you may take to enable the desired behavior -->
<!-- NOTE: Feature Requests without suggested solutions may not be addressed or treated with the same level of urgency as those that have suggested solutions. -->
### Who does this impact? Who is this for?
<!-- Who is this for? All users? TypeScript users? Beginners? Advanced? Yourself? People using X, Y, X, etc.? -->
### Describe alternatives you've considered
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
### Additional context
<!-- Add any other context or links about the feature request here. -->
### Your environment
<!-- PLEASE FILL THIS OUT -->
| Software | Version(s) |
| ---------- | ---------- |
| fp-ts | |
| TypeScript | |
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
**Before submitting a pull request,** please make sure the following is done:
- Fork [the repository](https://github.com/gcanti/fp-ts) and create your branch from `master`.
- Run `npm install` in the repository root.
- If you've fixed a bug or added code that should be tested, add tests!
- Ensure the test suite passes (`npm test`).
**Note**. If you've fixed a bug please link the related issue or, if missing, open an issue before sending a PR.
**Note**. If you find a typo in the **documentation**, make sure to modify the corresponding source (docs are generated).
**Note**. If you want to send a PR related to `fp-ts@1.x` please create your branch from `1.x`
================================================
FILE: .github/workflows/main.yml
================================================
name: Node.js CI
on:
push:
branches: [master]
pull_request:
branches: [master]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm run build --if-present
- run: npm test
================================================
FILE: .gitignore
================================================
*.log
node_modules
/dist
dev
.idea
coverage
docs/examples
================================================
FILE: .prettierrc
================================================
{
"semi": false,
"singleQuote": true,
"printWidth": 120,
"trailingComma": "none"
}
================================================
FILE: .vscode/settings.json
================================================
{
"typescript.tsdk": "./node_modules/typescript/lib",
"editor.defaultFormatter": "esbenp.prettier-vscode",
"eslint.validate": ["typescript"],
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"files.insertFinalNewline": true
}
================================================
FILE: CHANGELOG.md
================================================
# Changelog
> **Tags:**
>
> - [New Feature]
> - [Bug Fix]
> - [Breaking Change]
> - [Documentation]
> - [Internal]
> - [Polish]
> - [Experimental]
> - [Deprecation]
**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.16.11
**Bug Fix**
Fix Option.getOrd definition, #1963
# 2.16.10
**Polish**
Add apFirstW and apSecondW to ReaderTask, #1958
# 2.16.9
**Polish**
Support `strictBuiltinIteratorReturn`, #1949
# 2.16.8
**Polish**
Remove useless pure comment, closes #1937
# 2.16.7
**Polish**
Add tap for Identity #1943
# 2.16.6
**Polish**
Allow dependencies to be widen when using orLeft #1938
# 2.16.5
**Polish**
Resolved a RangeError where the maximum call stack size was exceeded when invoking `chainWithIndex`, #1931
# 2.16.4
**Polish**
Fix `__PURE__` annotation placement, closes #1926
# 2.16.3
**Polish**
`Either.ts`: `toError`: Don't fail when a value can't be converted to a primitive, #1924
# 2.16.2
**Polish**
Fix `"__PURE__"` annotation placement #1919, closes #1916
# 2.16.1
**Bug Fix**
- fix type signature of `ReaderTaskEither.tapReaderIO`, #1895
# 2.16.0
- `tapEither` (dual) (aka `chainFirstEitherK` / `chainFirstEitherKW`) https://github.com/gcanti/fp-ts/pull/1864
- `tapIO` (dual) (aka `chainFirstIOK`) https://github.com/gcanti/fp-ts/pull/1865
- `as` / `asUnit` https://github.com/gcanti/fp-ts/pull/1867
- `tapTask` (dual) (aka `chainFirstTaskK`) https://github.com/gcanti/fp-ts/pull/1869
- `mapError` (dual) (aka `mapLeft`) https://github.com/gcanti/fp-ts/pull/1870
- `mapBoth` (dual) (aka `bimap`) https://github.com/gcanti/fp-ts/pull/1872
- `tapReader` (dual) (aka `chainFirstReaderK` / `chainFirstIReaderKW`) https://github.com/gcanti/fp-ts/pull/1871
- `tapReaderEither` (dual) (aka `chainFirstReaderEitherK` / `chainFirstEitherKW`) https://github.com/gcanti/fp-ts/pull/1873
- `tapReaderIO` (dual) (aka `chainFirstReaderIOK`) https://github.com/gcanti/fp-ts/pull/1873
- `tapReaderTask` (dual) (aka `chainFirstReaderTaskK`) https://github.com/gcanti/fp-ts/pull/1873
- `tapTaskEither` (dual) (aka `chainFirstTaskEitherK` / `chainFirstTaskEitherKW`) https://github.com/gcanti/fp-ts/pull/1873
- `flatMapReaderTask` (dual) (aka `chainReaderTaskK` / `chainReaderTaskKW`) https://github.com/gcanti/fp-ts/pull/1874
- `flatMapTaskEither` (dual) (aka `chainTaskEitherK` / `chainTaskEitherKW`) https://github.com/gcanti/fp-ts/pull/1874
- `flatMapIO` (dual) (aka `chainIOK`) https://github.com/gcanti/fp-ts/pull/1874
- `Option.orElse` (dual) (aka `alt` / `altW`) https://github.com/gcanti/fp-ts/pull/1868
- `flatMapTask` (dual) (aka `chainTaskK`) https://github.com/gcanti/fp-ts/pull/1876
- `flatMapReader` (dual) (aka `chainReaderK` / `chainReaderKW`) https://github.com/gcanti/fp-ts/pull/1876
- `flatMapReaderIO` (dual) (aka `chainReaderIOK` / `chainReaderIOKW`) https://github.com/gcanti/fp-ts/pull/1879
- `flatMap*` (aka `chain*K` / `chain*KW`) https://github.com/gcanti/fp-ts/pull/1880
# 2.15.0
**New Feature**
- `function`
- add `LazyArg`
- add `tap` to
- `Either`
- `IO`
- `IOEither`
- `IOOption`
- `Option`
- `Reader`
- `ReaderEither`
- `ReaderIO`
- `ReaderTask`
- `ReaderTaskEither`
- `State`
- `StateReaderTaskEither`
- `Task`
- `TaskEither`
- `TaskOption`
- add `flatMapNullable` (dual) to
- `Either`
- `IOEither`
- `ReaderEither`
- `ReaderTaskEither`
- `StateReaderTaskEither`
- `TaskEither`
- add `flatMapOption` (dual) to
- `Either`
- `IOEither`
- `ReaderEither`
- `ReaderTaskEither`
- `StateReaderTaskEither`
- `TaskEither`
- add `liftNullable` to
- `Either`
- `IOEither`
- `ReaderEither`
- `ReaderTaskEither`
- `StateReaderTaskEither`
- `TaskEither`
- add `liftOption` to
- `Either`
- `IOEither`
- `ReaderEither`
- `ReaderTaskEither`
- `StateReaderTaskEither`
- `TaskEither`
- add `flatMapEither` (dual) to
- `IOEither`
- `ReaderEither`
- `ReaderTaskEither`
- `TaskEither`
- `Array`
- add index to `flatMap`
- `NonEmptyArray`
- add index to `flatMap`
- `ReadonlyArray`
- add index to `flatMap`
- `ReadonlyNonEmptyArray`
- add index to `flatMap`
# 2.14.0
**New Feature**
- add `flatMap` to
- `Either`
- `IOEither`
- `Reader`
- `ReaderEither`
- `ReaderIO`
- `ReaderTask`
- `ReaderTaskEither`
- `StateReaderTaskEither`
- `TaskEither`
- `NonEmptyArray`
- `ReadonlyNonEmptyArray`
- `Tree`
- `Array`
- `Identity`
- `IO`
- `IOOption`
- `Option`
- `ReadonlyArray`
- `State`
- `Task`
- `TaskOption`
# 2.13.2
- add `chainOptionKW`, #1846 (@DenisFrezzato)
# 2.13.1
- **New Feature**
- new modules:
- `ReaderIO`, #1738 (@sukovanej)
- do notation:
- add `let` helpers, #1725 (@Punie)
- `Alternative`
- add `getAlternativeMonoid`, #1717 (@willheslam)
- `function`
- `flip` is now curried, #1748 (@thewilkybarkid)
- `pipeable`
- add pipeable helpers, #1764 (@gcanti)
- `alt`
- `ap`
- `bimap`
- `chain`
- `compose`
- `contramap`
- `extend`
- `filter`
- `filterMap`
- `filterMapWithIndex`
- `filterWithIndex`
- `foldMap`
- `foldMapWithIndex`
- `map`
- `mapLeft`
- `mapWithIndex`
- `partition`
- `partitionMap`
- `partitionMapWithIndex`
- `partitionWithIndex`
- `promap`
- `reduce`
- `reduceRight`
- `reduceRightWithIndex`
- `reduceWithIndex`
- `ReaderTask`
- add `ReaderIO` constructors/combinators, #1773 (@thewilkybarkid)
- `ReaderTaskEither`
- add `ReaderIO` constructors/combinators, #1774 (@thewilkybarkid)
- `TaskEither`
- add `chainTaskOptionKW`, #1744 (@AmirabbasJ)
- **Polish**
- backport from v3 some handy defaults defined in natural transformations/combinators/constructors (@gcanti)
- fix wrong type parameter order:
- `FromIO`
- `chainIOK`
- `FromTask`
- `chainTaskK`
- `chainFirstTaskK`
- `Whiterable`
- `FilterE1`
- `TheseT`
- `both`
- `Either`
- `apFirstW`
- `apSecondW`
- `IOEither`
- `apFirstW`
- `apSecondW`
- `Reader`
- `apFirstW`
- `apSecondW`
- `ReaderEither`
- `apFirstW`
- `apSecondW`
- `ReaderTaskEither`
- `apFirstW`
- `apSecondW`
- `StateReaderTaskEither`
- `apFirstW`
- `apSecondW`
- `TaskEither`
- `apFirstW`
- `apSecondW`
- `Apply`
- add `ap` overloadings, #1721 (@waynevanson)
- `Either`
- remove useless type parameter in `exists` (@gcanti)
- `ReadonlyRecord`
- fix `fromEntries` return type, closes #1745 (@gcanti)
- `TaskEither`
- fix `fromPredicate` signature (@gcanti)
- `These`
- add missing `fromPredicate` (@gcanti)
- remove useless type parameter in `exists` (@gcanti)
- `Traversable`
- add more overloadings to traverse / sequence helpers, #1758 (@gcanti)
- `Writer`
- `getChain` requires a `Semigroup` instead of a `Monoid` (@gcanti)
- **Deprecation**
- `function`
- deprecate uncurried `flip` function, #1748 (@thewilkybarkid)
# 2.12.2
- **Polish**
- `ReadonlyRecord` / `Record`
- add `Applicative4` overloadings to `traverse` / `traverseWithIndex`, #1733 (@mlegenhausen)
# 2.12.1
- **Bug Fix**
- `ReadonlyRecord`
- fix `traverseWithIndex` implementation, #1704 (@waynevanson)
# 2.12.0
- **New Feature**
- add `IOOption` module (@gcanti)
- `Array`
- add `intercalate`, #1678 (@thewilkybarkid)
- `Bounded`
- add `clamp` (@gcanti)
- add `reverse` (@gcanti)
- `Either`
- add `apFirstW`, #1564 (@DenisFrezzato)
- add `apSecondW`, #1564 (@DenisFrezzato)
- `EitherT`
- add `chainNullableK`, #1619 (@cwstra)
- add `fromNullable`, #1619 (@cwstra)
- add `fromNullableK`, #1619 (@cwstra)
- `FromEither`
- add `chainFirstEitherK` (@gcanti)
- `IOEither`
- add `apFirstW`, #1564 (@DenisFrezzato)
- add `apSecondW`, #1564 (@DenisFrezzato)
- add `chainFirstEitherK` (@gcanti)
- add `chainFirstEitherKW` (@gcanti)
- add `orElseFirstIOK`, #1655 (@thewilkybarkid)
- add `bracketW`, #1627 (@thomasvargiu)
- `NonEmptyArray`
- add `intercalate`, #1678 (@thewilkybarkid)
- `Option`
- add `chainFirstEitherK` (@gcanti)
- `Ordering`
- add `matchW`, #1535 (@mlegenhausen)
- `Reader`
- add `apFirstW`, #1564 (@DenisFrezzato)
- add `apSecondW`, #1564 (@DenisFrezzato)
- `ReaderEither`
- add `apFirstW`, #1564 (@DenisFrezzato)
- add `apSecondW`, #1564 (@DenisFrezzato)
- add `chainFirstEitherK` (@gcanti)
- add `chainFirstEitherKW` (@gcanti)
- `ReaderTaskEither`
- add `apFirstW`, #1564 (@DenisFrezzato)
- add `apSecondW`, #1564 (@DenisFrezzato)
- add `chainFirstEitherK`, #1562 (@DenisFrezzato)
- add `chainFirstEitherKW`, #1562 (@DenisFrezzato)
- add `bracketW`, #1627 (@thomasvargiu)
- add `chainNullableK` (@gcanti)
- add `fromNullable` (@gcanti)
- add `fromNullableK` (@gcanti)
- `ReadonlyArray`
- add `intercalate`, #1678 (@thewilkybarkid)
- `ReadonlyNonEmptyArray`
- add `intercalate`, #1678 (@thewilkybarkid)
- `ReadonlyRecord`
- add `toEntries`, #1552 (@bravely)
- add `fromEntries`, #1552 (@bravely)
- `Record`
- add `toEntries`, #1552 (@bravely)
- add `fromEntries`, #1552 (@bravely)
- `StateReaderTaskEither`
- add `apFirstW`, #1564 (@DenisFrezzato)
- add `apSecondW`, #1564 (@DenisFrezzato)
- add `chainFirstEitherK` (@gcanti)
- add `chainFirstEitherKW` (@gcanti)
- `TaskEither`
- add `apFirstW`, #1564 (@DenisFrezzato)
- add `apSecondW`, #1564 (@DenisFrezzato)
- add `chainFirstEitherK`, #1659 (@vinassefranche)
- add `chainFirstEitherKW`, #1659 (@vinassefranche)
- add `orElseFirstIOK`, #1655 (@thewilkybarkid)
- add `orElseFirstTaskK`, #1655 (@thewilkybarkid)
- add `bracketW`, #1627 (@thomasvargiu)
- add `chainNullableK`, #1619 (@cwstra)
- add `fromNullable`, #1619 (@cwstra)
- add `fromNullableK`, #1619 (@cwstra)
- `TaskOption`
- add `fromEitherK` (@gcanti)
- add `chainEitherK` (@gcanti)
- add `chainFirstEitherK` (@gcanti)
# 2.11.10
- **Polish**
- `TaskEither` / `TaskOption`
- now `tryCatch` / `tryCatchK` will catch synchronous errors too, #1676 (@thewilkybarkid)
# 2.11.9
- **Polish**
- add `Refinement` overload to 'every' functions, #1681 (@mlegenhausen)
# 2.11.8
- **Polish**
- Add missing pure annotations, #1658 (@OliverJAsh)
# 2.11.7
- **Polish**
- more `Functor.map` overloadings, closes #1623 (@gcanti)
# 2.11.6
- **Polish**
- `ReaderEither`
- `orElseFirstW`: intersect dependencies like `orElseW` (@gcanti)
- `ReaderTaskEither`
- `orElseFirstW`: intersect dependencies like `orElseW`, #1635 (@OliverJAsh)
# 2.11.5
- **Polish**
- more curried `elem` overloads, #1602 (@ammut)
# 2.11.4
- **Polish**
- fix `chainNullableK` signature, #1589 (@bwlt)
- stack safety for `Task` via microtasks suspension, #1591 (@mikearnaldi)
# 2.11.3
- **Polish**
- pipe: fix v8 performance cliff for >10 case stmts, #1585 (@pbadenski)
# 2.11.2
- **Polish**
- Add/fix pure comments, #1555 (@OliverJAsh)
# 2.11.1
- **Deprecation**
- `Array`
- deprecate `range`, use `NonEmptyArray` module instead.
- `function`
- deprecate `Endomorphism`, use `Endomorphism` module instead.
- deprecate `getEndomorphismMonoid`, use `Endomorphism` module instead.
- deprecate `Predicate`, use `Predicate` module instead.
- deprecate `not`, use `Predicate` module instead.
- deprecate `Refinement`, use `Refinement` module instead.
- `Monoid`
- deprecate `monoidVoid`, use `void` module instead.
- `NonEmptyArray`
- deprecate `groupSort` (it's just `sort` followed by `group`)
- `Option`
- deprecate `getRefinement`, use `Refinement` module instead.
- deprecate `getFirstMonoid`, use `getMonoid` module instead.
- deprecate `getLastMonoid`, use `getMonoid` module instead.
- `ReadonlyArray`
- deprecate `range`, use `ReadonlyNonEmptyArray` module instead.
- `ReadonlyNonEmptyArray`
- deprecate `groupSort` (it's just `sort` followed by `group`)
- `Record` / `ReadonlyRecord`: deprecate overloads without `Ord` constraint (@anthonyjoeseph):
- `collect`
- `reduce`
- `foldMap`
- `reduceRight`
- `reduceWithIndex`
- `foldMapWithIndex`
- `reduceRightWithIndex`
- `getShow`
- deprecate `Foldable` in favour of `getFoldable` (@anthonyjoeseph)
- deprecate `FoldableWithIndex` in favour of `getFoldableWithIndex` (@anthonyjoeseph)
- deprecate `Traversable` in favour of `getTraversable` (@anthonyjoeseph)
- deprecate `TraversableWithIndex` in favour of `getTraversableWithIndex` (@anthonyjoeseph)
- deprecate `Witherable` in favour of `getWitherable` (@anthonyjoeseph)
- `Semigroup`
- deprecate `semigroupVoid`, use `void` module instead.
- **New Feature**
- add `Endomorphism` module
- add `Predicate` module
- add `Refinement` module
- add `FromState` module
- add `FromThese` module
- add `void` module
- add `FromReader` module
- add `NaturalTransformation` module
- add `Zero` module
- `Alt`
- add `altAll`
- `Alternative`
- add `altAll`
- `Array`
- add `prependW`, `appendW` (@thewilkybarkid)
- add `fromOption`, `fromPredicate` (@cdimitroulas)
- add `filterE`
- add `ChainRecDepthFirst` instance (@qlonik)
- add `chainRecDepthFirst`
- add `ChainRecBreadthFirst` instance (@qlonik)
- add `chainRecBreadthFirst`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- add `fromEither`
- add `FromEither` instance
- add `fromEitherK`
- make `isEmpty` a user defined guard
- add `concat` / `concatW`
- add `match`, `matchW`, `matchLeftW`, `matchRightW`
- add `fromOptionK`
- add `Zero` instance
- add `guard` constructor
- add `exists` alias
- `boolean`
- add `isBoolean`
- `Either`
- add `chainOptionK`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `EitherT`
- add `orElseFirst`
- add `orLeft`
- `function`
- add `SK` (@cdimitroulas)
- add `apply`
- `IO`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `IOEither`
- add `orElseFirst` / `orElseFirstW`
- add `orLeft`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `Magma`
- add `reverse`
- add `filterFirst`
- add `filterSecond`
- add `endo`
- add `concatAll`
- `Map`
- add `union`
- add `intersection`
- add `difference`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- add `getFoldable`
- add `foldMap`
- add `reduceRight`
- add `reduceWithIndex`
- add `foldMapWithIndex`
- add `reduceRightWithIndex`
- `NonEmptyArray`
- add `matchLeft`, `matchRight`, `modifyHead`, `modifyLast` (@cdimitroulas)
- add `union`
- add `getUnionSemigroup`
- add `makeBy`
- add `range`
- make `concat` pipeable
- `number`
- add `MagmaSub`
- add `isNumber`
- `string`
- add `isString`
- `Option`
- add `FromEither` instance
- add `fromEitherK`
- add `chainEitherK`
- add `Zero` instance
- add `guard` constructor
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `Ord`
- add `trivial` instance
- add `equals`
- `Reader`
- add `asksReaderW`, `asksReader`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `ReaderEither`
- add `asksReaderEitherW`, `asksReaderEither`
- add `orElseFirst` / `orElseFirstW`
- add `orLeft`
- add `chainReaderKW`
- add `chainFirstReaderK`, `chainFirstReaderKW`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `ReaderTask`
- add `asksReaderTaskW`, `asksReaderTask`
- add `chainReaderKW`
- add `chainFirstReaderK`, `chainFirstReaderKW`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `ReaderTaskEither`
- add `asksReaderTaskEitherW`, `asksReaderTaskEither`
- add `orElseFirst` / `orElseFirstW`
- add `orLeft`
- add `fromReaderTaskK`
- add `fromReaderEitherK`
- add `chainReaderKW`
- add `chainReaderTaskK`, `chainReaderTaskKW`
- add `chainFirstReaderK`, `chainFirstReaderKW`
- add `chainFirstReaderTaskK`, `chainFirstReaderTaskKW`
- add `chainReaderEitherK`, `chainReaderEitherKW`
- add `chainFirstReaderEitherK`, `chainFirstReaderEitherKW`
- add `chainFirstTaskEitherK`, `chainFirstTaskEitherKW`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `ReadonlyArray`
- add `prependW`, `appendW` (@thewilkybarkid)
- add `filterE`
- add `ChainRecDepthFirst` instance (@qlonik)
- add `chainRecDepthFirst`
- add `ChainRecBreadthFirst` instance (@qlonik)
- add `chainRecBreadthFirst`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- add `fromOption`
- add `fromPredicate`
- add `fromEither`
- add `FromEither` instance
- add `fromEitherK`
- make `isEmpty` a user defined guard
- add `concat` / `concatW`
- add `match`, `matchW`, `matchLeftW`, `matchRightW`
- add `fromOptionK`
- add `Zero` instance
- add `guard` constructor
- add `exists` alias
- `ReadonlyMap`
- add `union`
- add `intersection`
- add `difference`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- add `reduce`
- add `foldMap`
- add `reduceRight`
- add `reduceWithIndex`
- add `foldMapWithIndex`
- add `reduceRightWithIndex`
- `ReadonlyNonEmptyArray`
- add `matchLeft`, `matchRight`, `modifyHead`, `modifyLast` (@cdimitroulas)
- add `union`
- add `getUnionSemigroup`
- add `makeBy`
- add `range`
- make `concat` pipeable
- `ReadonlyRecord`
- add `union` (@anthonyjoeseph)
- add `intersection` (@anthonyjoeseph)
- add `difference` (@anthonyjoeseph)
- add `getUnionSemigroup` (@anthonyjoeseph)
- add `getUnionMonoid` (@anthonyjoeseph)
- add `getIntersectionSemigroup` (@anthonyjoeseph)
- add `getDifferenceMagma` (@anthonyjoeseph)
- `ReadonlySet`
- add `getUnionSemigroup`
- add `getDifferenceMagma`
- `Record`
- add `union`
- add `intersection`
- add `difference`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- `Set`
- add `getUnionSemigroup`
- add `getDifferenceMagma`
- `State`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `StateReaderTaskEither`
- add `fromStateK`
- add `chainStateK`
- add `local`
- add `asksStateReaderTaskEitherW`, `asksStateReaderTaskEither`
- add `chainReaderKW`
- add `chainFirstReaderK`, `chainFirstReaderKW`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `string`
- add `toUpperCase`
- add `toLowerCase`
- add `replace`
- add `split`
- add `trim`
- add `trimLeft`
- add `trimRight`
- add `includes`
- add `startsWith`
- add `endsWith`
- add `slice`
- `struct`
- add `evolve`
- `Task`
- add `ApT`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `TaskEither`
- add `fromTaskOption` (@thewilkybarkid)
- add `fromTaskOptionK`
- add `chainTaskOptionK`
- add `orElseFirst` / `orElseFirstW`
- add `orLeft`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `TaskOption`
- add `fromTaskEither` (@thewilkybarkid)
- add `Zero` instance
- add `guard` constructor
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- add missing `FromEither` instance
- `TaskThese`
- add `ApT`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `These`
- add `elem`
- add `exists`
- add `ApT`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `Tree`
- add `exists`
- `Witherable`
- add `filterE`, #1458 (@vinassefranche)
- add `wiltDefault`
- add `witherDefault`
- **Polish**
- remove unnecessary type parameters
- `Either`
- `isLeft`
- `isRight`
- `Option`
- `isNone`
- `These`
- `isLeft`
- `isRight`
# 2.11.0-rc.2
- `string`
- `split` now returns a `ReadonlyNonEmptyArray`
- `TaskOption`
- add missing `FromEither` instance
- some signature changes in `2.11.0-rc.1` caused type inference issues
- `Array` / `ReadonlyArray`
- revert `isOutOfBound` signature change
- revert `isEmpty` signature change
- revert `size` signature change
- `Either`
- revert `exists` signature change
- revert `elem` signature change
- `These`
- revert `exists` signature change
- revert `elem` signature change
- `NonEmptyArray` / `ReadonlyNonEmptyArray`
- revert `isOutOfBound` signature change
- `Set` / `ReadonlySet`
- revert `isEmpty` signature change
- revert `size` signature change
- `Map` / `ReadonlyMap`
- revert `isEmpty` signature change
- revert `size` signature change
# 2.11.0-rc.1
- **Deprecation**
- `Array`
- deprecate `range`, use `NonEmptyArray` module instead.
- `function`
- deprecate `Endomorphism`, use `Endomorphism` module instead.
- deprecate `getEndomorphismMonoid`, use `Endomorphism` module instead.
- deprecate `Predicate`, use `Predicate` module instead.
- deprecate `not`, use `Predicate` module instead.
- deprecate `Refinement`, use `Refinement` module instead.
- `Monoid`
- deprecate `monoidVoid`, use `void` module instead.
- `NonEmptyArray`
- deprecate `groupSort` (it's just `sort` followed by `group`)
- `Option`
- deprecate `getRefinement`, use `Refinement` module instead.
- deprecate `getFirstMonoid`, use `getMonoid` module instead.
- deprecate `getLastMonoid`, use `getMonoid` module instead.
- `ReadonlyArray`
- deprecate `range`, use `ReadonlyNonEmptyArray` module instead.
- `ReadonlyNonEmptyArray`
- deprecate `groupSort` (it's just `sort` followed by `group`)
- `Record` / `ReadonlyRecord`: deprecate overloads without `Ord` constraint (@anthonyjoeseph):
- `collect`
- `reduce`
- `foldMap`
- `reduceRight`
- `reduceWithIndex`
- `foldMapWithIndex`
- `reduceRightWithIndex`
- `getShow`
- deprecate `Foldable` in favour of `getFoldable` (@anthonyjoeseph)
- deprecate `FoldableWithIndex` in favour of `getFoldableWithIndex` (@anthonyjoeseph)
- deprecate `Traversable` in favour of `getTraversable` (@anthonyjoeseph)
- deprecate `TraversableWithIndex` in favour of `getTraversableWithIndex` (@anthonyjoeseph)
- deprecate `Witherable` in favour of `getWitherable` (@anthonyjoeseph)
- `Semigroup`
- deprecate `semigroupVoid`, use `void` module instead.
- **New Feature**
- add `Endomorphism` module
- add `Predicate` module
- add `Refinement` module
- add `FromState` module
- add `FromThese` module
- add `void` module
- add `FromReader` module
- add `NaturalTransformation` module
- add `Zero` module
- `Alt`
- add `altAll`
- `Alternative`
- add `altAll`
- `Array`
- add `prependW`, `appendW` (@thewilkybarkid)
- add `fromOption`, `fromPredicate` (@cdimitroulas)
- add `filterE`
- add `ChainRecDepthFirst` instance (@qlonik)
- add `chainRecDepthFirst`
- add `ChainRecBreadthFirst` instance (@qlonik)
- add `chainRecBreadthFirst`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- add `fromEither`
- add `FromEither` instance
- add `fromEitherK`
- make `isEmpty` a user defined guard
- add `concat` / `concatW`
- add `match`, `matchW`, `matchLeftW`, `matchRightW`
- add `fromOptionK`
- add `Zero` instance
- add `guard` constructor
- add `exists` alias
- `boolean`
- add `isBoolean`
- `Either`
- add `chainOptionK`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `EitherT`
- add `orElseFirst`
- add `orLeft`
- `function`
- add `SK` (@cdimitroulas)
- add `apply`
- `IO`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `IOEither`
- add `orElseFirst` / `orElseFirstW`
- add `orLeft`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `Magma`
- add `reverse`
- add `filterFirst`
- add `filterSecond`
- add `endo`
- add `concatAll`
- `Map`
- add `union`
- add `intersection`
- add `difference`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- add `getFoldable`
- add `foldMap`
- add `reduceRight`
- add `reduceWithIndex`
- add `foldMapWithIndex`
- add `reduceRightWithIndex`
- `NonEmptyArray`
- add `matchLeft`, `matchRight`, `modifyHead`, `modifyLast` (@cdimitroulas)
- add `union`
- add `getUnionSemigroup`
- add `makeBy`
- add `range`
- make `concat` pipeable
- `number`
- add `MagmaSub`
- add `isNumber`
- `string`
- add `isString`
- `Option`
- add `FromEither` instance
- add `fromEitherK`
- add `chainEitherK`
- add `Zero` instance
- add `guard` constructor
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `Ord`
- add `trivial` instance
- add `equals`
- `Reader`
- add `asksReaderW`, `asksReader`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `ReaderEither`
- add `asksReaderEitherW`, `asksReaderEither`
- add `orElseFirst` / `orElseFirstW`
- add `orLeft`
- add `chainReaderKW`
- add `chainFirstReaderK`, `chainFirstReaderKW`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `ReaderTask`
- add `asksReaderTaskW`, `asksReaderTask`
- add `chainReaderKW`
- add `chainFirstReaderK`, `chainFirstReaderKW`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `ReaderTaskEither`
- add `asksReaderTaskEitherW`, `asksReaderTaskEither`
- add `orElseFirst` / `orElseFirstW`
- add `orLeft`
- add `fromReaderTaskK`
- add `fromReaderEitherK`
- add `chainReaderKW`
- add `chainReaderTaskK`, `chainReaderTaskKW`
- add `chainFirstReaderK`, `chainFirstReaderKW`
- add `chainFirstReaderTaskK`, `chainFirstReaderTaskKW`
- add `chainReaderEitherK`, `chainReaderEitherKW`
- add `chainFirstReaderEitherK`, `chainFirstReaderEitherKW`
- add `chainFirstTaskEitherK`, `chainFirstTaskEitherKW`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `ReadonlyArray`
- add `prependW`, `appendW` (@thewilkybarkid)
- add `filterE`
- add `ChainRecDepthFirst` instance (@qlonik)
- add `chainRecDepthFirst`
- add `ChainRecBreadthFirst` instance (@qlonik)
- add `chainRecBreadthFirst`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- add `fromOption`
- add `fromPredicate`
- add `fromEither`
- add `FromEither` instance
- add `fromEitherK`
- make `isEmpty` a user defined guard
- add `concat` / `concatW`
- add `match`, `matchW`, `matchLeftW`, `matchRightW`
- add `fromOptionK`
- add `Zero` instance
- add `guard` constructor
- add `exists` alias
- `ReadonlyMap`
- add `union`
- add `intersection`
- add `difference`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- add `reduce`
- add `foldMap`
- add `reduceRight`
- add `reduceWithIndex`
- add `foldMapWithIndex`
- add `reduceRightWithIndex`
- `ReadonlyNonEmptyArray`
- add `matchLeft`, `matchRight`, `modifyHead`, `modifyLast` (@cdimitroulas)
- add `union`
- add `getUnionSemigroup`
- add `makeBy`
- add `range`
- make `concat` pipeable
- `ReadonlyRecord`
- add `union` (@anthonyjoeseph)
- add `intersection` (@anthonyjoeseph)
- add `difference` (@anthonyjoeseph)
- add `getUnionSemigroup` (@anthonyjoeseph)
- add `getUnionMonoid` (@anthonyjoeseph)
- add `getIntersectionSemigroup` (@anthonyjoeseph)
- add `getDifferenceMagma` (@anthonyjoeseph)
- `ReadonlySet`
- add `getUnionSemigroup`
- add `getDifferenceMagma`
- `Record`
- add `union`
- add `intersection`
- add `difference`
- add `getUnionSemigroup`
- add `getUnionMonoid`
- add `getIntersectionSemigroup`
- add `getDifferenceMagma`
- `Set`
- add `getUnionSemigroup`
- add `getDifferenceMagma`
- `State`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `StateReaderTaskEither`
- add `fromStateK`
- add `chainStateK`
- add `local`
- add `asksStateReaderTaskEitherW`, `asksStateReaderTaskEither`
- add `chainReaderKW`
- add `chainFirstReaderK`, `chainFirstReaderKW`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `string`
- add `toUpperCase`
- add `toLowerCase`
- add `replace`
- add `split`
- add `trim`
- add `trimLeft`
- add `trimRight`
- add `includes`
- add `startsWith`
- add `endsWith`
- add `slice`
- `struct`
- add `evolve`
- `Task`
- add `ApT`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `TaskEither`
- add `fromTaskOption` (@thewilkybarkid)
- add `fromTaskOptionK`
- add `chainTaskOptionK`
- add `orElseFirst` / `orElseFirstW`
- add `orLeft`
- add `flattenW`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `TaskOption`
- add `fromTaskEither` (@thewilkybarkid)
- add `Zero` instance
- add `guard` constructor
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `TaskThese`
- add `ApT`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- add `traverseReadonlyNonEmptyArrayWithIndexSeq`
- add `traverseReadonlyArrayWithIndexSeq`
- `These`
- add `elem`
- add `exists`
- add `ApT`
- add `traverseReadonlyNonEmptyArrayWithIndex`
- add `traverseReadonlyArrayWithIndex`
- `Tree`
- add `exists`
- `Witherable`
- add `filterE`, #1458 (@vinassefranche)
- add `wiltDefault`
- add `witherDefault`
- **Polish**
- remove unnecessary type parameters
- `Either`
- `exists`
- `isLeft`
- `isRight`
- `elem`
- `Option`
- `isNone`
- `These`
- `isLeft`
- `isRight`
- `Set` / `ReadonlySet`
- `isEmpty`
- `size`
- `Array` / `ReadonlyArray`
- `isEmpty`
- `isOutOfBound`
- `size`
- `Map` / `ReadonlyMap`
- `isEmpty`
- `size`
- `NonEmptyArray` / `ReadonlyNonEmptyArray`
- `isOutOfBound`
# 2.10.5
- **Bug Fix**
- `StateT`
- fix typo in `fromF`, #1503 (@DKurilo)
# 2.10.4
- **Bug Fix**
- `altW` left type is too wide in `Either`-based data types, #1488 (@wmaurer)
# 2.10.3
- **Bug Fix**
- `StateReaderTaskEither`
- `traverseArrayWithIndex` does not pass the output state from each step to the subsequent step, #1486
# 2.10.2
- **Bug Fix**
- `Record`
- `hasOwnProperty` should be an alias of `ReadonlyRecord.hasOwnProperty`
# 2.10.1
- **Bug Fix**
- rename `hasOwnProperty` in `internal` module, #1481 (@OliverJAsh)
# 2.10.0
- **Deprecations**
- deprecate `pipeable` module, use the specific helpers instead
- deprecate `ValidationT` module, use `EitherT` instead
- deprecate "mega instances", use small, specific instances instead
- deprecate the old monad transformers, use the specific helpers instead
- `Applicative`
- deprecate `getApplicativeComposition`, use `ap` helper instead
- `Array`
- deprecate `prependToAll`, use `prependAll` instead
- deprecate `cons` in favour of `prepend`
- deprecate `snoc` in favour of `append`
- deprecate `empty`
- `BooleanAlgebra`
- deprecate `booleanAlgebraBoolean`, use `boolean.BooleanAlgebra` instead
- deprecate `getFunctionBooleanAlgebra`, use `function.getBooleanAlgebra` instead
- deprecate `getDualBooleanAlgebra`, use `reverse` instead
- `Bounded`
- deprecate `boundedNumber`, use `number.Bounded` instead
- `Choice`
- deprecate `splitChoice` in favour of `split`
- deprecate `fanin` in favour of `fanIn`
- `Compactable`
- deprecate `getCompactableComposition`, use `compact`, `separate` helpers instead
- deprecate `Separated`, use `Separated.Separated` instead
- `Either`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getValidationSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getValidationMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getValidation`, use `getApplicativeValidation` and `getAltValidation` instead
- deprecate `Json` type, use the `Json` module instead
- deprecate `parseJSON` type, use the `Json` module instead
- deprecate `stringifyJSON` type, use the `Json` module instead
- `Eq`
- deprecate `eqBoolean`, use `boolean.Eq` instead
- deprecate `eqString`, use `string.Eq` instead
- deprecate `eqNumber`, use `number.Eq` instead
- deprecate `eqDate`, use `Date.Eq` instead
- deprecate `getStructEq`, use `struct` instead
- deprecate `getTupleEq`, use `tuple` instead
- `Filterable`
- deprecate `getFilterableComposition`, use `filter`, `filterMap`, `partition`, `partitionMap` helpers instead
- `Foldable`
- deprecate `toArray` in favour of `toReadonlyArray`
- deprecate `getFoldableComposition`, use `reduce`, `foldMap`, `reduceRight` helpers instead
- `FoldableWithIndex`
- deprecate `getFoldableWithIndexComposition`, use `reduceWithIndex`, `foldMapWithIndex`, `reduceRightWithIndex` helpers instead
- `Functor`
- deprecate `getFunctorComposition`, use `map` helper instead
- `FunctorWithIndex`
- deprecate `getFunctorWithIndexComposition`, use `mapWithIndex` helper instead
- `IO`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `fromIO`
- `IOEither`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- daprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getIOValidation`, use `getApplicativeIOValidation` and `getAltIOValidation` instead
- `Map`
- deprecate `insertAt` in favour of `upsertAt`
- deprecate `empty`
- `Monoid`
- deprecate `monoidAll`, use `boolean.MonoidAll` instead
- deprecate `monoidAny`, use `boolean.MonoidAny` instead
- deprecate `getFunctionMonoid`, use `function.getMonoid` instead
- deprecate `getEndomorphismMonoid`, use `function.getEndomorphismMonoid` instead (**Note**. The execution order in
`function.getEndomorphismMonoid` is reversed)
- deprecate `monoidString`, use `string.Monoid` instead
- deprecate `monoidSum`, use `number.MonoidSum` instead
- deprecate `monoidProduct`, use `number.MonoidProduct` instead
- deprecate `fold`, use `concatAll` instead
- deprecate `getMeetMonoid`, use `min` instead
- deprecate `getJoinMonoid`, use `max` instead
- deprecate `getDualMonoid`, use `reverse` instead
- deprecate `getStructMonoid`, use `struct` instead
- deprecate `getTupleMonoid`, use `tuple` instead
- `NonEmptyArray`
- deprecate `fold`, use `concatAll` instead
- deprecate `prependToAll`, use `prependAll` instead
- deprecate `cons` in favour of `prepend`
- deprecate `snoc` in favour of `append`
- deprecate `uncons` in favour of `unprepend`
- deprecate `unsnoc` in favour of `unappend`
- deprecate `filter` in favour of `Array`'s `filter`
- deprecate `filterWithIndex` in favour of `Array`'s `filterWithIndex`
- `Option`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- `Ord`
- deprecate `ordBoolean`, use `boolean.Ord` instead
- deprecate `ordString`, use `string.Ord` instead
- deprecate `ordNumber`, use `number.Ord` instead
- deprecate `ordDate`, use `Date.Ord` instead
- deprecate `getDualOrd`, use `reverse` instead
- deprecate `getTupleOrd`, use `tuple` instead
- `Ordering`
- deprecate `eqOrdering`, use `Eq` instead
- deprecate `monoidOrdering`, use `Monoid` instead
- deprecate `invert` in favour of `reverse`
- `Ring`
- deprecate `getFunctionRing`, use `function.getRing` instead
- `Reader`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getMonoid` in favour of `Applicative.getApplicativeMonoid`
- `ReaderEither`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getReaderValidation`, use `getApplicativeReaderValidation` and `getAltReaderValidation` instead
- deprecate `local`, Use `Reader`'s `local` instead
- `ReaderTask`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `run`
- deprecate `local`, Use `Reader`'s `local` instead
- `ReaderTaskEither`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getReaderTaskValidation`, use `getApplicativeReaderTaskValidation` and `getAltReaderTaskValidation` instead
- deprecate `run`
- deprecate `local`, Use `Reader`'s `local` instead
- `ReaderTaskEither`
- deprecate `run`
- `ReadonlyArray`
- deprecate `prependToAll`, use `prependAll` instead
- deprecate `cons` in favour of `prepend`
- deprecate `snoc` in favour of `append`
- `ReadonlyNonEmptyArray`
- deprecate `fold`, use `concatAll` instead
- deprecate `prependToAll`, use `prependAll` instead
- deprecate `insertAt`, Use `ReadonlyArray`'s `insertAt` instead
- deprecate `cons` in favour of `prepend`
- deprecate `snoc` in favour of `append`
- deprecate `uncons` in favour of `unprepend`
- deprecate `unsnoc` in favour of `unappend`
- deprecate `filter` in favour of `ReadonlyArray`'s `filter`
- deprecate `filterWithIndex` in favour of `ReadonlyArray`'s `filterWithIndex`
- `ReadonlyMap`
- deprecate `insertAt` in favour of `upsertAt`
- `ReadonlyRecord`
- deprecate `hasOwnProperty`, use `has` instead
- deprecate `insertAt` in favour of `upsertAt`
- `ReadonlySet`
- deprecate `fromArray` in favour of `fromReadonlyArray`
- `ReadonlyTuple`
- deprecate `mapLeft` in favour of `mapSnd`
- deprecate `map` in favour of `mapFst`
- `Record`
- deprecate `hasOwnProperty`, use `has` instead
- deprecate `insertAt` in favour of `upsertAt`
- deprecate `empty`
- `Ring`
- deprecate `getTupleRing`, use `tuple` instead
- `Semigroup`
- deprecate `semigroupAll`, use `boolean.SemigroupAll` instead
- deprecate `semigroupAny`, use `boolean.SemigroupAny` instead
- deprecate `getFunctionSemigroup`, use `function.getSemigroup` instead
- deprecate `semigroupString`, use `string.Semigroup` instead
- deprecate `semigroupSum`, use `number.SemigroupSum` instead
- deprecate `semigroupProduct`, use `number.SemigroupProduct` instead
- deprecate `fold`, use `concatAll` instead
- deprecate `getIntercalateSemigroup`, use `intercalate` instead
- deprecate `getMeetSemigroup`, use `min` instead
- deprecate `getJoinSemigroup`, use `max` instead
- deprecate `getDualSemigroup`, use `reverse` instead
- deprecate `getStructSemigroup`, use `struct` instead
- deprecate `getTupleSemigroup`, use `tuple` instead
- deprecate `getFirstSemigroup`, use `first` instead
- deprecate `getLastSemigroup`, use `last` instead
- deprecate `getObjectSemigroup`, use `assign` instead
- `Set`
- deprecate `subset` in favour of `isSubset`
- `Show`
- deprecate `showBoolean`, use `boolean.Show` instead
- deprecate `showString`, use `string.Show` instead
- deprecate `showNumber`, use `number.Show` instead
- deprecate `getStructShow`, use `struct` instead
- deprecate `getTupleShow`, use `tuple` instead
- `Strong`
- deprecate `splitStrong` in favour of `split`
- deprecate `fanout` in favour of `fanOut`
- `Task`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `fromTask`
- `TaskEither`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getTaskValidation`, use `getApplicativeTaskValidation` and `getAltTaskValidation` instead
- `TaskThese`
- deprecate `functorTaskThese` instance in favour of `Functor`
- deprecate `bifunctorTaskThese` instance in favour of `Bifunctor`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `toTuple` in favour of `toTuple2`
- `These`
- deprecate `toTuple` in favour of `toTuple2`
- `Traversable`
- deprecate `getTraversableComposition`, use `traverse`, `sequence` helpers instead
- `Tuple`
- deprecate `mapLeft` in favour of `mapSnd`
- deprecate `map` in favour of `mapFst`
- **New Feature**
- add `Pointed` type class
- add `FromEither` type class
- add `FromIO` type class
- add `FromTask` type class
- add `TaskOption` module
- add `string` module
- add `number` module
- add `Separated` module (@YBogomolov)
- add `Json` module
- `Apply`
- add `ap` helper
- add `apS` helper
- add `apFirst` helper
- add `apSecond` helper
- add `getApplySemigroup`
- `Applicative`
- add `getApplicativeMonoid`
- `Array`
- add `Pointed` instance
- add `Apply` instance
- add `matchLeft` alias
- add `matchRight` alias
- add `size`
- better `unsafeInsertAt` signature
- better `chunksOf` signature
- add `getSemigroup`
- `boolean`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `Eq` instance
- add `BooleanAlgebra` instance
- add `SemigroupAll` instance
- add `SemigroupAny` instance
- add `MonoidAll` instance
- add `MonoidAny` instance
- add `Ord` instance
- add `Show` instance
- `BooleanAlgebra`
- add `reverse`
- `Chain`
- add `bind` helper
- add `chainFirst` helper
- `Compactable`
- add `compact` helper
- add `separate` helper
- add `separated` constructor
- `Date`
- add `Eq` instance
- add `Ord` instance
- `Filterable`
- add `filter` helper
- add `filterMap` helper
- add `partition` helper
- add `partitionMap` helper
- `Foldable`
- add `reduce` helper
- add `foldaMap` helper
- add `reduceRight` helper
- `FoldableWithIndex`
- add `reduceWithIndex` helper
- add `foldaMapWithIndex` helper
- add `reduceRightWithIndex` helper
- `function`
- add `getBooleanAlgebra`
- add `getSemigroup`
- add `getMonoid`
- add `getSemiring`
- add `getRing`
- add `getEndomorphismMonoid`
- `Functor`
- add `map` helper
- add `bindTo` helper
- add `flap` derivable, #1393 (@williamareynolds)
- `FunctorWithIndex`
- add `mapWithIndex` helper
- `Either`
- add `Pointed` instance
- add `Apply` instance
- add `getCompactable`
- add `getFilterable`
- add `FromEither` instance
- add `toUnion`, closes #1362
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `tryCatchK`
- add `fromOptionK`
- add `chainOptionK`
- `EitherT`
- split `getEitherM` into separated functions
- `Eq`
- add `getSemigroup`
- add `struct`
- add `tuple`
- `Identity`
- add `Pointed` instance
- add `Apply` instance
- `IO`
- add `Pointed` instance
- add `Apply` instance
- add `FromIO` instance
- `IOEither`
- add `Pointed` instance
- add `getCompactable`
- add `FromIO` instance
- add `FromEither` instance
- add `tryCatchK` combinator
- add `toUnion`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `fromOptionK`
- add `chainOptionK`
- `Map`
- add `filterWithIndex` combinator
- add `filterMapWithIndex` combinator
- add `partitionWithIndex` combinator
- add `partitionMapWithIndex` combinator
- add `getTraversableWithIndex` instance
- add `getFoldableWithIndex` instance
- `Monoid`
- add `concatAll`
- add `min`
- add `max`
- add `reverse`
- add `struct`
- add `tuple`
- `NonEmptyArray`
- add `Pointed` instance
- add `Apply` instance
- add `concatAll`
- add `isNonEmpty` guard
- add `fromReadonlyNonEmptyArray` constructor
- add `chainWithIndex` combinator
- add `chop`
- add `splitAt`
- add `chunksOf`
- `Option`
- add `Pointed` instance
- add `Apply` instance
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `tryCatchK`
- `OptionT`
- split `getOptionM` into separated functions
- `Ord`
- add `equalsDefault`
- add `reverse`
- add `tuple`
- `Ordering`
- add `Eq` instance
- add `Semigroup` instance
- add `Monoid` instance
- add `match`
- `Random`
- add `randomElem`
- `Reader`
- add `Pointed` instance
- add `Apply` instance
- export `first`, `second`, `left`, `right`
- `ReaderT`
- split `getReaderM` into separated functions
- `ReaderEither`
- add `Pointed` instance
- add `Apply` instance
- add `FromEither` instance
- add `getCompactable`
- add `getFilterable`
- add `toUnion`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `fromOptionK`
- add `chainOptionK`
- `ReaderTask`
- add `Pointed` instance
- add `ApplyPar` instance
- add `ApplySeq` instance
- add `FromIO` instance
- add `FromTask` instance
- add `traverseSeqArrayWithIndex`
- add `traverseSeqArray`
- add `sequenceSeqArray`
- export `Chain` instance
- export `Monad` instance
- export `MonadIO` instance
- export `MonadTask` instance
- `ReaderTaskEither`
- add `Pointed` instance
- add `ApplyPar` instance
- add `ApplySeq` instance
- add `FromIO` instance
- add `FromTask` instance
- add `FromEither` instance
- add `getCompactable`
- add `getFilterable`
- add `toUnion`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `fromOptionK`
- add `chainOptionK`
- export `Chain` instance
- export `Monad` instance
- export `MonadIO` instance
- export `MonadTask` instance
- export `MonadThrow` instance
- `ReadonlyArray`
- add `Pointed` instance
- add `Apply` instance
- add `getSemigroup`
- add `matchLeft` instance
- add `matchRight` instance
- add `size`
- better `unsafeInsertAt` signature
- better `chunksOf` signature, closes #1407
- `ReadonlyMap`
- add `filterWithIndex` combinator
- add `filterMapWithIndex` combinator
- add `partitionWithIndex` combinator
- add `partitionMapWithIndex` combinator
- add `getFunctorWithIndex`
- add `getFoldable`
- add `getFoldableWithIndex`
- add `getTraversable`
- add `getTraversableWithIndex`
- `ReadonlyNonEmptyArray`
- add `Pointed` instance
- add `Apply` instance
- add `concatAll`
- add `isNonEmpty`
- add `chainWithIndex`
- add `chop`
- add `splitAt`
- add `chunksOf`
- `ReadonlySet`
- add `isEmpty`
- add `size`
- add `toggle`
- `Ring`
- add `tuple`
- `Set`
- add `isEmpty`
- add `size`
- `Semigroup`
- add `constant`
- add `concatAll`
- add `intercalate`
- add `min`
- add `max`
- add `struct`
- add `tuple`
- add `first`
- add `last`
- add `assign`
- `Show`
- add `struct`
- add `tuple`
- `State`
- add `Pointed` instance
- add `Apply` instance
- `StateT`
- split `getStateM` into separated functions
- `StateReaderTaskEither`
- add `Pointed` instance
- add `Apply` instance
- add `Monad` instance
- add `FromIO` instance
- add `FromTask` instance
- add `FromEither` instance
- add `fromOptionK`
- add `chainOptionK`
- export `MonadIO` instance
- export `MonadTask` instance
- export `MonadThrow` instance
- `Task`
- add `Pointed` instance
- add `ApplyPar` instance
- add `ApplySeq` instance
- add `FromIO` instance
- add `FromTask` instance
- export `Chain` instance
- export `Monad` instance
- export `MonadIO` instance
- export `MonadTask` instance
- `TaskEither`
- add `Pointed` instance
- add `ApplyPar` instance
- add `ApplySeq` instance
- add `getCompactable`
- add `FromIO` instance
- add `FromTask` instance
- add `FromEither` instance
- add `toUnion`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `fromOptionK`
- add `chainOptionK`
- export `Chain` instance
- export `Monad` instance
- export `MonadIO` instance
- export `MonadTask` instance
- export `MonadThrow` instance
- `TaskThese`
- add `Functor` instance
- add `Pointed` instance
- add `Bifunctor` instance
- add `toTuple2`
- add `getApply`
- add `FromIO` instance
- add `FromTask` instance
- add `fromEither` function
- add `FromEither` instance
- add `getChain` instance
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `fromOption`
- add `fromOptionK`
- add `fromPredicate`
- `These`
- add `Pointed` instance
- add `of` function
- add `getApply`
- add `toTuple2`
- add `FromEither` instance
- add `fromOption` constructor
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `fromOptionK`
- `TaskOption`
- export `Chain` instance
- export `Monad` instance
- `TheseT`
- split `getTheseM` into separated functions
- `Traversable`
- add `traverse` helper
- add `sequence` helper
- `Tree`
- add `Pointed` instance
- add `Apply` instance
- `Writer`
- add `getPointed`
- add `getApply`
- add `getApplicative`
- add `getChain`
- **Bug Fix**
- `ReadonlyRecord` / `Record`: remove `extends string` constraints in `singleton` / `insertAt`, closes #1413
- `TaskOption`
- fix `getOrElseW` signature
- **Internal**
- add `internal` module
- **Polish**
- the scope in `bindTo`, `bind`, `bindW`, `apS`, `apSW` is now correctly `readonly`
- fix `FromEither` type parameter order
- `Array` / `ReadonlyArray`
- assert arrays as non-empty when using `some`, #1424 (@thewilkybarkid)
- fix `matchLeft`, `matchRight` type parameter order
- `EitherT`
- add overloads for `Kind2`, `Kind3`, `Kind4`
- `OptionT`
- add overloads for `Kind2`, `Kind3`, `Kind4`
- `ReaderT`
- add overloads for `Kind2`, `Kind3`, `Kind4`
- `ReadonlyMap`
- sort keys in `getShow`
- `ReadonlySet`
- sort keys in `getShow`
- `StateT`
- add overloads for `Kind2`, `Kind3`
- `TheseT`
- add overloads for `Kind2`, `Kind3`, `Kind4`
# 2.10.0-rc.8
- **Polish**
- the scope in `bindTo`, `bind`, `bindW`, `apS`, `apSW` is now correctly `readonly`
- fix `FromEither` type parameter order
# 2.10.0-rc.7
- **Breaking Change** (with respect to `2.10.0-rc`)
- rename module `object` to `struct`
# 2.10.0-rc.6
- **Bug Fix**
- `ReadonlyNonEmptyArray`
- remove circular dependency on `NonEmptyArray`, closes #1443
- **Breaking Change** (with respect to `2.10.0-rc`)
- `EitherT`
- rename `match` to `matchE` and add `match`
- `IOEither`
- rename `match` / `matchW` to `matchE` / `matchWE` and add `match` / `matchW`
- `OptionT`
- rename `match` to `matchE` and add `match`
- `ReaderEither`
- rename `match` / `matchW` to `matchE` / `matchWE` and add `match` / `matchW`
- `ReaderTaskEither`
- rename `match` / `matchW` to `matchE` / `matchWE` and add `match` / `matchW`
- `TheseT`
- rename `match` to `matchE` and add `match`
- `TaskEither`
- rename `match` / `matchW` to `matchE` / `matchWE` and add `match` / `matchW`
- `TaskOption`
- rename `match` / `matchW` to `matchE` / `matchWE` and add `match` / `matchW`
- `TaskThese`
- rename `match` / `matchW` to `matchE` / `matchWE` and add `match` / `matchW`
# 2.10.0-rc.5
- **Bug Fix**
- `TaskOption`
- fix `getOrElseW` signature
- **Breaking Change** (with respect to `2.10.0-rc`)
- `OptionT`
- rename `none` to `zero` and change signature
- `ReaderT`
- remove `ask`, `asks` (they will be derived from the `FromReader` type-class in `2.11`)
- `Semigroup`
- move `assign` to `object` module and rename to `getAssignSemigroup`
- `ReaderT`
- remove `get`, `put`, `modify`, `gets` (they will be derived from the `FromState` type-class in `2.11`)
- **Deprecation**
- `Tuple`
- deprecate `mapLeft` in favour of `mapSnd`
- deprecate `map` in favour of `mapFst`
- `ReadonlyTuple`
- deprecate `mapLeft` in favour of `mapSnd`
- deprecate `map` in favour of `mapFst`
- **Polish**
- `Array` / `ReadonlyArray`
- assert arrays as non-empty when using `some`, #1424 (@thewilkybarkid)
- fix `matchLeft`, `matchRight` type parameter order
- `EitherT`
- add overloads for `Kind2`, `Kind3`, `Kind4`
- `OptionT`
- add overloads for `Kind2`, `Kind3`, `Kind4`
- `ReaderT`
- add overloads for `Kind2`, `Kind3`, `Kind4`
- `ReadonlyMap`
- sort keys in `getShow`
- `ReadonlySet`
- sort keys in `getShow`
- `StateT`
- add overloads for `Kind2`, `Kind3`
- `TheseT`
- add overloads for `Kind2`, `Kind3`, `Kind4`
- **Internal**
- add `internal` module
# 2.10.0-rc.4
- **Deprecations**
- `Array`
- deprecate `empty`
- `Map`
- deprecate `empty`
- `NonEmptyArray`
- deprecate `filter` in favour of `Array`'s `filter`
- deprecate `filterWithIndex` in favour of `Array`'s `filterWithIndex`
- `ReadonlyNonEmptyArray`
- deprecate `filter` in favour of `ReadonlyArray`'s `filter`
- deprecate `filterWithIndex` in favour of `ReadonlyArray`'s `filterWithIndex`
- `Record`
- deprecate `empty`
- **Polish**
- `NonEmptyArray`
- remove duplicated `append`, `prepend`, `isNonEmpty`
- `ReadonlyNonEmptyArray`
- remove duplicated `append`, `prepend`, `isNonEmpty`
# 2.10.0-rc.3
- **Deprecations**
- `Array`
- deprecate `cons` in favour of `prepend`
- deprecate `snoc` in favour of `append`
- `Ordering`
- deprecate `invert` in favour of `reverse`
- `ReadonlyMap`
- deprecate `insertAt` in favour of `upsertAt`
- `ReadonlyRecord`
- deprecate `insertAt` in favour of `upsertAt`
- `Map`
- deprecate `insertAt` in favour of `upsertAt`
- `NonEmptyArray`
- deprecate `cons` in favour of `prepend`
- deprecate `snoc` in favour of `append`
- deprecate `uncons` in favour of `unprepend`
- deprecate `unsnoc` in favour of `unappend`
- `Record`
- deprecate `insertAt` in favour of `upsertAt`
- `ReadonlyArray`
- deprecate `cons` in favour of `prepend`
- deprecate `snoc` in favour of `append`
- `ReadonlyNonEmptyArray`
- deprecate `insertAt`, Use `ReadonlyArray`'s `insertAt` instead
- deprecate `cons` in favour of `prepend`
- deprecate `snoc` in favour of `append`
- deprecate `uncons` in favour of `unprepend`
- deprecate `unsnoc` in favour of `unappend`
- `ReadonlySet`
- deprecate `fromArray` in favour of `fromReadonlyArray`
- `Set`
- deprecate `subset` in favour of `isSubset`
- **New Feature**
- `Array`
- add `size`
- better `unsafeInsertAt` signature
- better `chunksOf` signature
- add `getSemigroup`
- `Map`
- add `filterWithIndex` combinator
- add `filterMapWithIndex` combinator
- add `partitionWithIndex` combinator
- add `partitionMapWithIndex` combinator
- add `getTraversableWithIndex` instance
- add `getFoldableWithIndex` instance
- `NonEmptyArray`
- add `isNonEmpty` guard
- add `fromReadonlyNonEmptyArray` constructor
- add `chainWithIndex` combinator
- add `chop`
- add `splitAt`
- add `chunksOf`
- `Ordering`
- add `match`
- `ReadonlyArray`
- add `size`
- better `unsafeInsertAt` signature
- better `chunksOf` signature, closes #1407
- `ReadonlyNonEmptyArray`
- add `isNonEmpty`
- add `chainWithIndex`
- add `chop`
- add `splitAt`
- add `chunksOf`
- `ReadonlySet`
- add `isEmpty`
- add `size`
- add `toggle`
- `Set`
- add `isEmpty`
- add `size`
- `string`
- add `empty`
- add `isEmpty`
- add `size`
- **Bug Fix**
- `ReadonlyRecord` / `Record`: remove `extends string` constraints in `singleton` / `insertAt`, closes #1413
# 2.10.0-rc.2
- **Deprecations**
- `Choice`
- deprecate `splitChoice` in favour of `split`
- deprecate `fanin` in favour of `fanIn`
- `Strong`
- deprecate `splitStrong` in favour of `split`
- deprecate `fanout` in favour of `fanOut`
- **New Feature**
- `Reader`
- export `first`, `second`, `left`, `right`
- `ReaderTask`
- export `Chain` instance
- export `Monad` instance
- export `MonadIO` instance
- export `MonadTask` instance
- `ReaderTaskEither`
- export `Chain` instance
- export `Monad` instance
- export `MonadIO` instance
- export `MonadTask` instance
- export `MonadThrow` instance
- `StateReaderTaskEither`
- export `MonadIO` instance
- export `MonadTask` instance
- export `MonadThrow` instance
- `Task`
- export `Chain` instance
- export `Monad` instance
- export `MonadIO` instance
- export `MonadTask` instance
- `TaskEither`
- export `Chain` instance
- export `Monad` instance
- export `MonadIO` instance
- export `MonadTask` instance
- export `MonadThrow` instance
- `TaskOption`
- export `Chain` instance
- export `Monad` instance
- **Polish**
- `Compactable`
- split `compact` / `separate` constraints
# 2.10.0-rc.1
- **Deprecations**
- deprecate `pipeable` module, use the specific helpers instead
- deprecate `ValidationT` module, use `EitherT` instead
- deprecate "mega instances", use small, specific instances instead
- deprecate the old monad transformers, use the specific helpers instead
- `Applicative`
- deprecate `getApplicativeComposition`, use `ap` helper instead
- `Array`
- deprecate `prependToAll`, use `prependAll` instead
- `BooleanAlgebra`
- deprecate `booleanAlgebraBoolean`, use `boolean.BooleanAlgebra` instead
- deprecate `getFunctionBooleanAlgebra`, use `function.getBooleanAlgebra` instead
- deprecate `getDualBooleanAlgebra`, use `reverse` instead
- `Bounded`
- deprecate `boundedNumber`, use `number.Bounded` instead
- `Compactable`
- deprecate `getCompactableComposition`, use `compact`, `separate` helpers instead
- deprecate `Separated`, use `Separated.Separated` instead
- `Either`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getValidationSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getValidationMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getValidation`, use `getApplicativeValidation` and `getAltValidation` instead
- deprecate `Json` type, use the `Json` module instead
- deprecate `parseJSON` type, use the `Json` module instead
- deprecate `stringifyJSON` type, use the `Json` module instead
- `Eq`
- deprecate `eqBoolean`, use `boolean.Eq` instead
- deprecate `eqString`, use `string.Eq` instead
- deprecate `eqNumber`, use `number.Eq` instead
- deprecate `eqDate`, use `Date.Eq` instead
- deprecate `getStructEq`, use `struct` instead
- deprecate `getTupleEq`, use `tuple` instead
- `Filterable`
- deprecate `getFilterableComposition`, use `filter`, `filterMap`, `partition`, `partitionMap` helpers instead
- `Foldable`
- deprecate `toArray` in favour of `toReadonlyArray`
- deprecate `getFoldableComposition`, use `reduce`, `foldMap`, `reduceRight` helpers instead
- `FoldableWithIndex`
- deprecate `getFoldableWithIndexComposition`, use `reduceWithIndex`, `foldMapWithIndex`, `reduceRightWithIndex` helpers instead
- `Functor`
- deprecate `getFunctorComposition`, use `map` helper instead
- `FunctorWithIndex`
- deprecate `getFunctorWithIndexComposition`, use `mapWithIndex` helper instead
- `IO`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `fromIO`
- `IOEither`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getIOValidation`, use `getApplicativeIOValidation` and `getAltIOValidation` instead
- `Monoid`
- deprecate `monoidAll`, use `boolean.MonoidAll` instead
- deprecate `monoidAny`, use `boolean.MonoidAny` instead
- deprecate `getFunctionMonoid`, use `function.getMonoid` instead
- deprecate `getEndomorphismMonoid`, use `function.getEndomorphismMonoid` instead (**Note**. The execution order in
`function.getEndomorphismMonoid` is reversed)
- deprecate `monoidString`, use `string.Monoid` instead
- deprecate `monoidSum`, use `number.MonoidSum` instead
- deprecate `monoidProduct`, use `number.MonoidProduct` instead
- deprecate `fold`, use `concatAll` instead
- deprecate `getMeetMonoid`, use `min` instead
- deprecate `getJoinMonoid`, use `max` instead
- deprecate `getDualMonoid`, use `reverse` instead
- deprecate `getStructMonoid`, use `struct` instead
- deprecate `getTupleMonoid`, use `tuple` instead
- `NonEmptyArray`
- deprecate `fold`, use `concatAll` instead
- deprecate `prependToAll`, use `prependAll` instead
- `Option`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- `Ord`
- deprecate `ordBoolean`, use `boolean.Ord` instead
- deprecate `ordString`, use `string.Ord` instead
- deprecate `ordNumber`, use `number.Ord` instead
- deprecate `ordDate`, use `Date.Ord` instead
- deprecate `getDualOrd`, use `reverse` instead
- deprecate `getTupleOrd`, use `tuple` instead
- `Ordering`
- deprecate `eqOrdering`, use `Eq` instead
- deprecate `monoidOrdering`, use `Monoid` instead
- `Ring`
- deprecate `getFunctionRing`, use `function.getRing` instead
- `Reader`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getMonoid` in favour of `Applicative.getApplicativeMonoid`
- `ReaderEither`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getReaderValidation`, use `getApplicativeReaderValidation` and `getAltReaderValidation` instead
- deprecate `local`, Use `Reader`'s `local` instead
- `ReaderTask`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `run`
- deprecate `local`, Use `Reader`'s `local` instead
- `ReaderTaskEither`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getReaderTaskValidation`, use `getApplicativeReaderTaskValidation` and `getAltReaderTaskValidation` instead
- deprecate `run`
- deprecate `local`, Use `Reader`'s `local` instead
- `ReaderTaskEither`
- deprecate `run`
- `ReadonlyArray`
- deprecate `prependToAll`, use `prependAll` instead
- `ReadonlyNonEmptyArray`
- deprecate `fold`, use `concatAll` instead
- deprecate `prependToAll`, use `prependAll` instead
- `ReadonlyRecord`
- deprecate `hasOwnProperty`, use `has` instead
- `Record`
- deprecate `hasOwnProperty`, use `has` instead
- `Ring`
- deprecate `getTupleRing`, use `tuple` instead
- `Semigroup`
- deprecate `semigroupAll`, use `boolean.SemigroupAll` instead
- deprecate `semigroupAny`, use `boolean.SemigroupAny` instead
- deprecate `getFunctionSemigroup`, use `function.getSemigroup` instead
- deprecate `semigroupString`, use `string.Semigroup` instead
- deprecate `semigroupSum`, use `number.SemigroupSum` instead
- deprecate `semigroupProduct`, use `number.SemigroupProduct` instead
- deprecate `fold`, use `concatAll` instead
- deprecate `getIntercalateSemigroup`, use `intercalate` instead
- deprecate `getMeetSemigroup`, use `min` instead
- deprecate `getJoinSemigroup`, use `max` instead
- deprecate `getDualSemigroup`, use `reverse` instead
- deprecate `getStructSemigroup`, use `struct` instead
- deprecate `getTupleSemigroup`, use `tuple` instead
- deprecate `getFirstSemigroup`, use `first` instead
- deprecate `getLastSemigroup`, use `last` instead
- deprecate `getObjectSemigroup`, use `assign` instead
- `Show`
- deprecate `showBoolean`, use `boolean.Show` instead
- deprecate `showString`, use `string.Show` instead
- deprecate `showNumber`, use `number.Show` instead
- deprecate `getStructShow`, use `struct` instead
- deprecate `getTupleShow`, use `tuple` instead
- `Task`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `fromTask`
- `TaskEither`
- deprecate `getApplySemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getApplyMonoid` in favour of `Applicative.getApplicativeMonoid`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `getTaskValidation`, use `getApplicativeTaskValidation` and `getAltTaskValidation` instead
- `TaskThese`
- deprecate `functorTaskThese` instance in favour of `Functor`
- deprecate `bifunctorTaskThese` instance in favour of `Bifunctor`
- deprecate `getSemigroup` in favour of `Apply.getApplySemigroup`
- deprecate `toTuple` in favour of `toTuple2`
- `These`
- deprecate `toTuple` in favour of `toTuple2`
- `Traversable`
- deprecate `getTraversableComposition`, use `traverse`, `sequence` helpers instead
- **New Feature**
- add `Pointed` type class
- add `FromEither` type class
- add `FromIO` type class
- add `FromTask` type class
- add `TaskOption` module
- add `string` module
- add `number` module
- add `Separated` module (@YBogomolov)
- add `Json` module
- `Apply`
- add `ap` helper
- add `apS` helper
- add `apFirst` helper
- add `apSecond` helper
- add `getApplySemigroup`
- `Applicative`
- add `getApplicativeMonoid`
- `Array`
- add `Pointed` instance
- add `Apply` instance
- add `matchLeft` alias
- add `matchRight` alias
- `boolean`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `Eq` instance
- add `BooleanAlgebra` instance
- add `SemigroupAll` instance
- add `SemigroupAny` instance
- add `MonoidAll` instance
- add `MonoidAny` instance
- add `Ord` instance
- add `Show` instance
- `BooleanAlgebra`
- add `reverse`
- `Chain`
- add `bind` helper
- add `chainFirst` helper
- `Compactable`
- add `compact` helper
- add `separate` helper
- add `separated` constructor
- `Date`
- add `Eq` instance
- add `Ord` instance
- `Filterable`
- add `filter` helper
- add `filterMap` helper
- add `partition` helper
- add `partitionMap` helper
- `Foldable`
- add `reduce` helper
- add `foldaMap` helper
- add `reduceRight` helper
- `FoldableWithIndex`
- add `reduceWithIndex` helper
- add `foldaMapWithIndex` helper
- add `reduceRightWithIndex` helper
- `function`
- add `getBooleanAlgebra`
- add `getSemigroup`
- add `getMonoid`
- add `getSemiring`
- add `getRing`
- add `getEndomorphismMonoid`
- `Functor`
- add `map` helper
- add `bindTo` helper
- add `flap` derivable, #1393 (@williamareynolds)
- `FunctorWithIndex`
- add `mapWithIndex` helper
- `Either`
- add `Pointed` instance
- add `Apply` instance
- add `getCompactable`
- add `getFilterable`
- add `FromEither` instance
- add `toUnion`, closes #1362
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `tryCatchK`
- add `fromOptionK`
- add `chainOptionK`
- `EitherT`
- split `getEitherM` into separated functions
- `Eq`
- add `getSemigroup`
- add `struct`
- add `tuple`
- `Identity`
- add `Pointed` instance
- add `Apply` instance
- `IO`
- add `Pointed` instance
- add `Apply` instance
- add `FromIO` instance
- `IOEither`
- add `Pointed` instance
- add `getCompactable`
- add `FromIO` instance
- add `FromEither` instance
- add `tryCatchK` combinator
- add `toUnion`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `fromOptionK`
- add `chainOptionK`
- `Monoid`
- add `concatAll`
- add `min`
- add `max`
- add `reverse`
- add `struct`
- add `tuple`
- `NonEmptyArray`
- add `Pointed` instance
- add `Apply` instance
- add `concatAll`
- `Option`
- add `Pointed` instance
- add `Apply` instance
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `tryCatchK`
- `OptionT`
- split `getOptionM` into separated functions
- `Ord`
- add `equalsDefault`
- add `reverse`
- add `tuple`
- `Ordering`
- add `Eq` instance
- add `Semigroup` instance
- add `Monoid` instance
- `Random`
- add `randomElem`
- `Reader`
- add `Pointed` instance
- add `Apply` instance
- `ReaderT`
- split `getReaderM` into separated functions
- `ReaderEither`
- add `Pointed` instance
- add `Apply` instance
- add `FromEither` instance
- add `getCompactable`
- add `getFilterable`
- add `toUnion`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `fromOptionK`
- add `chainOptionK`
- `ReaderTask`
- add `Pointed` instance
- add `ApplyPar` instance
- add `ApplySeq` instance
- add `FromIO` instance
- add `FromTask` instance
- add `traverseSeqArrayWithIndex`
- add `traverseSeqArray`
- add `sequenceSeqArray`
- `ReaderTaskEither`
- add `Pointed` instance
- add `ApplyPar` instance
- add `ApplySeq` instance
- add `FromIO` instance
- add `FromTask` instance
- add `FromEither` instance
- add `getCompactable`
- add `getFilterable`
- add `toUnion`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `fromOptionK`
- add `chainOptionK`
- `ReadonlyArray`
- add `Pointed` instance
- add `Apply` instance
- add `getSemigroup`
- add `matchLeft` instance
- add `matchRight` instance
- `ReadonlyMap`
- add `filterWithIndex` combinator
- add `filterMapWithIndex` combinator
- add `partitionWithIndex` combinator
- add `partitionMapWithIndex` combinator
- add `getFunctorWithIndex`
- add `getFoldable`
- add `getFoldableWithIndex`
- add `getTraversable`
- add `getTraversableWithIndex`
- `ReadonlyNonEmptyArray`
- add `Pointed` instance
- add `Apply` instance
- add `concatAll`
- `Ring`
- add `tuple`
- `Semigroup`
- add `constant`
- add `concatAll`
- add `intercalate`
- add `min`
- add `max`
- add `struct`
- add `tuple`
- add `first`
- add `last`
- add `assign`
- `Show`
- add `struct`
- add `tuple`
- `State`
- add `Pointed` instance
- add `Apply` instance
- `StateT`
- split `getStateM` into separated functions
- `StateReaderTaskEither`
- add `Pointed` instance
- add `Apply` instance
- add `Monad` instance
- add `FromIO` instance
- add `FromTask` instance
- add `FromEither` instance
- add `fromOptionK`
- add `chainOptionK`
- `Task`
- add `Pointed` instance
- add `ApplyPar` instance
- add `ApplySeq` instance
- add `FromIO` instance
- add `FromTask` instance
- `TaskEither`
- add `Pointed` instance
- add `ApplyPar` instance
- add `ApplySeq` instance
- add `getCompactable`
- add `FromIO` instance
- add `FromTask` instance
- add `FromEither` instance
- add `toUnion`
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `orElseW`
- add `fromOptionK`
- add `chainOptionK`
- `TaskThese`
- add `Functor` instance
- add `Pointed` instance
- add `Bifunctor` instance
- add `toTuple2`
- add `getApply`
- add `FromIO` instance
- add `FromTask` instance
- add `fromEither` function
- add `FromEither` instance
- add `getChain` instance
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `fromOption`
- add `fromOptionK`
- add `fromPredicate`
- `These`
- add `Pointed` instance
- add `of` function
- add `getApply`
- add `toTuple2`
- add `FromEither` instance
- add `fromOption` constructor
- add `foldW`
- add `match` alias
- add `matchW` alias
- add `fromOptionK`
- `TheseT`
- split `getTheseM` into separated functions
- `Traversable`
- add `traverse` helper
- add `sequence` helper
- `Tree`
- add `Pointed` instance
- add `Apply` instance
- `Writer`
- add `getPointed`
- add `getApply`
- add `getApplicative`
- add `getChain`
# 2.9.5
- **Polish**
- `Array`, `ReadonlyArray`: change `scanLeft` and `scanRight` to return `NonEmptyArray`, `ReadonlyNonEmptyArray`, #1391 (@willheslam)
# 2.9.4
- **Bug Fix**
- fix `filter` overloads in `NonEmptyArray` / `ReadonlyNonEmptyArray`, closes #1388 (@gcanti)
# 2.9.3
- **Polish**
- add more `/*#__PURE__*/` comments to improve tree shaking, #1370 (@OliverJAsh)
# 2.9.2
- **Polish**
- add more `/*#__PURE__*/` comments to improve tree shaking, #1368 (@OliverJAsh)
# 2.9.1
- **Polish**
- `Array` / `ReadonlyArray`
- `sort`: return the input when length <= 1, closes #1357 (@gcanti)
- `uniq`: return the input when length <= 1 (@gcanti)
# 2.9.0
- **New Feature**
- `Array`
- add `altW` (@gcanti)
- add `intersperse` (@marcotoniut)
- add `prependToAll` (@marcotoniut)
- add `every` (@gcanti)
- add `some` (@gcanti)
- add `Do` (@gcanti)
- `Either`
- add `altW` (@gcanti)
- add `fromNullableK` (@gcanti)
- add `chainNullableK` (@gcanti)
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- add `filterOrElseW` (@gcanti)
- `Identity`
- add `altW` (@gcanti)
- add `Do` (@gcanti)
- `IO`
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- `IOEither`
- add `altW` (@gcanti)
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `traverseSeqArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseSeqArray` (@mohaalak @iamomiid)
- add `sequenceSeqArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- add `filterOrElseW` (@gcanti)
- `NonEmptyArray`
- add `altW` (@gcanti)
- add `uncons` (@marcotoniut)
- add `unsnoc` (@marcotoniut)
- add `intersperse` (@marcotoniut)
- add `prependToAll` (@marcotoniut)
- add `Do` (@gcanti)
- `Option`
- add `altW` (@gcanti)
- add `fromNullableK` (@gcanti)
- add `chainNullableK` (@gcanti)
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- `Reader`
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- `ReaderEither`
- add `altW` (@gcanti)
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- add `filterOrElseW` (@gcanti)
- `ReaderTask`
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `traverseSeqArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseSeqArray` (@mohaalak @iamomiid)
- add `sequenceSeqArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- `ReaderTaskEither`
- add `altW` (@gcanti)
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `traverseSeqArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseSeqArray` (@mohaalak @iamomiid)
- add `sequenceSeqArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- add `filterOrElseW` (@gcanti)
- `ReadonlyArray`
- add `altW` (@gcanti)
- add `intersperse` (@marcotoniut)
- add `prependToAll` (@marcotoniut)
- add `every` (@gcanti)
- add `some` (@gcanti)
- add `Do` (@gcanti)
- `ReadonlyNonEmptyArray`
- add `altW` (@gcanti)
- add `uncons` (@marcotoniut)
- add `unsnoc` (@marcotoniut)
- add `intersperse` (@marcotoniut)
- add `prependToAll` (@marcotoniut)
- add `Do` (@gcanti)
- `State`
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- `StateReaderTaskEither`
- add `altW` (@gcanti)
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `filterOrElseW` (@gcanti)
- `Task`
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `traverseSeqArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseSeqArray` (@mohaalak @iamomiid)
- add `sequenceSeqArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- `TaskEither`
- add `altW` (@gcanti)
- add `traverseArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseArray` (@mohaalak @iamomiid)
- add `sequenceArray` (@mohaalak @iamomiid)
- add `traverseSeqArrayWithIndex` (@mohaalak @iamomiid)
- add `traverseSeqArray` (@mohaalak @iamomiid)
- add `sequenceSeqArray` (@mohaalak @iamomiid)
- add `Do` (@gcanti)
- add `filterOrElseW` (@gcanti)
- `Tree`
- add `Do` (@gcanti)
- **Deprecation**
- `Option`
- deprecate `mapNullable` in favour of `chainNullableK` (@gcanti)
- `StateReaderTaskEither`
- deprecate `stateReaderTaskEitherSeq` because is useless, `stateReaderTaskEither` is already sequential (@gcanti)
# 2.8.6
- **Bug Fix**
- fix #1350 (@gcanti)
# 2.8.5
- **Polish**
- `IOEither`
- export missing `of` function (@gcanti)
- `ReaderEither`
- export missing `of` function (@gcanti)
# 2.8.4
- **Polish**
- `IOEither`
- add `ApplicativePar` instance (@gcanti)
- add `ApplicativeSeq` instance (@gcanti)
- **Deprecation**
- `IOEither`
- deprecate `Applicative` in favour of `ApplicativePar` (@gcanti)
# 2.8.3
- **Polish**
- `Reader`
- export `Strong` instance (@urgent)
- export `Choice` instance (@gcanti)
# 2.8.2
- **Polish**
- increase the supported number of arguments of pipe function (@heka1024)
- **Bug fix**
- revert `groupBy` change in #1286 (@gcanti)
- **Internal**
- define all non-pipeable internal functions in terms of the corresponding pipeable versions (@gcanti)
# 2.8.1
- **Polish**
- fix `HKT` typings duplication (which might break module augmentation)
# 2.8.0
- **New Feature**
- expose `fp-ts` modules without lib/es6 prefix, #1241 (@StefanoMagrassi)
- `Array`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- `Either`
- add `apW` (@gcanti)
- add `apS` (@gcanti)
- add `apSW` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `bindW` (@gcanti)
- add `chainFirstW`, #1273 (@leemhenson)
- add `getFilterable` (@gcanti)
- `Foldable`
- add `toArray`, #1272 (@newswim)
- add `reduceM` (@gcanti)
- `Identity`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- `IO`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- `IOEither`
- add `apS` (@gcanti)
- add `apSW` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `bindW` (@gcanti)
- add `chainFirstW`, #1273 (@leemhenson)
- `NonEmptyArray`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- relax `group` signature (@gcanti)
- relax `groupBy` signature (@gcanti)
- relax `groupSort` signature (@gcanti)
- relax `sort` signature (@gcanti)
- `Option`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- `Reader`
- add `apW` (@gcanti)
- add `apS` (@gcanti)
- add `apSW` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `bindW` (@gcanti)
- `ReaderEither`
- add `apS` (@gcanti)
- add `apSW` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `bindW` (@gcanti)
- add `chainFirstW`, #1273 (@leemhenson)
- `ReaderTask`
- add `apS` (@gcanti)
- add `apSW` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `bindW` (@gcanti)
- `ReaderTaskEither`
- add `apS` (@gcanti)
- add `apSW` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `bindW` (@gcanti)
- add `chainFirstW`, #1273 (@leemhenson)
- `ReadonlyArray`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- `ReadonlyNonEmptyArray`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- relax `group` signature (@gcanti)
- relax `groupBy` signature (@gcanti)
- relax `groupSort` signature (@gcanti)
- relax `sort` signature (@gcanti)
- `State`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `evaluate` (@gcanti)
- add `execute` (@gcanti)
- `StateReaderTaskEither`
- add `apS` (@gcanti)
- add `apSW` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `bindW` (@gcanti)
- add `chainFirstW`, #1273 (@leemhenson)
- add `evaluate` (@gcanti)
- add `execute` (@gcanti)
- `Task`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- `TaskEither`
- add `apS` (@gcanti)
- add `apSW` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- add `bindW` (@gcanti)
- add `chainFirstW`, #1273 (@leemhenson)
- `Tree`
- add `apS` (@gcanti)
- add `bind` (@gcanti)
- add `bindTo` (@gcanti)
- `Writer`
- add `evaluate` (@gcanti)
- add `execute` (@gcanti)
- **Deprecation**
- `Foldable`
- deprecate `foldM` in favour of `reduceM` (@gcanti)
- `State`
- deprecate `evalState` in favour of `evaluate` (@gcanti)
- deprecate `execState` in favour of `execute` (@gcanti)
- `StateReaderTaskEither`
- deprecate `evalState` in favour of `evaluate` (@gcanti)
- deprecate `execState` in favour of `execute` (@gcanti)
- `Writer`
- deprecate `evalWriter` in favour of `evaluate` (@gcanti)
- deprecate `execWriter` in favour of `execute` (@gcanti)
# 2.7.1
- **Bug Fix**
- `ReadonlyArray`
- fix `FunctorWithIndex` instance name (@gcanti)
- fix `Functor` instance name (@gcanti)
- **Polish**
- `Array`
- relax `sort` signature (@gcanti)
- relax `sortBy` signature (@gcanti)
- `Map`
- export `mapWithIndex` (@gcanti)
- `ReadonlyArray`
- relax `sort` signature (@gcanti)
- relax `sortBy` signature (@gcanti)
- `ReadonlyMap`
- export `mapWithIndex` (@gcanti)
# 2.7.0
- **Bug Fix**
- `These`
- fix `ap` implementation in `getMonad` function (@gcanti)
- **Polish**
- improve performance of sequenceT and sequenceS, fix #1255 (@gcanti)
- **New Feature**
- `function`
- add `hole` (type hole simulation) (@gcanti)
- `Array`
- add `chainWithIndex`, #1256 (@OliverJAsh)
- add `Functor` instance (@gcanti)
- add `FunctorWithIndex` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Unfoldable` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `Alternative` instance (@gcanti)
- add `Extend` instance (@gcanti)
- add `Compactable` instance (@gcanti)
- add `Filterable` instance (@gcanti)
- add `FilterableWithIndex` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `FoldableWithIndex` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `TraversableWithIndex` instance (@gcanti)
- add `Witherable` instance (@gcanti)
- `Const`
- add `Functor` instance (@gcanti)
- add `Contravariant` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- `Either`
- add `getApplicativeValidation` constrained instance (@gcanti)
- add `getAltValidation` constrained instance (@gcanti)
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `Extend` instance (@gcanti)
- add `ChainRec` instance (@gcanti)
- add `MonadThrow` instance (@gcanti)
- `Eq`
- add `Contravariant` instance (@gcanti)
- `Identity`
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `Comonad` instance (@gcanti)
- add `ChainRec` instance (@gcanti)
- `IO`
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `MonadIO` instance (@gcanti)
- add `ChainRec` instance (@gcanti)
- `IOEither`
- add `getApplicativeIOValidation` constrained instance (@gcanti)
- add `getAltIOValidation` constrained instance (@gcanti)
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `MonadIO` instance (@gcanti)
- add `MonadThrow` instance (@gcanti)
- `Map`
- add `Functor` instance (@gcanti)
- add `Compactable` instance (@gcanti)
- add `Filterable` instance (@gcanti)
- `NonEmptyArray`
- add `Functor` instance (@gcanti)
- add `FunctorWithIndex` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `FoldableWithIndex` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `TraversableWithIndex` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `Comonad` instance (@gcanti)
- `Option`
- add `Functor` instance (@gcanti)
- add `Applicativ` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `Alternative` instance (@gcanti)
- add `Extend` instance (@gcanti)
- add `Compactable` instance (@gcanti)
- add `Filterable` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `Witherable` instance (@gcanti)
- add `MonadThrow` instance (@gcanti)
- `Ord`
- add `ContravariantOrd` instance (@gcanti)
- `Reader`
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Profunctor` instance (@gcanti)
- add `Category` instance (@gcanti)
- add `String` instance (@gcanti)
- add `Choice` instance (@gcanti)
- `ReaderEither`
- add `getApplicativeReaderValidation` constrained instance (@gcanti)
- add `getAltReaderValidation` constrained instance (@gcanti)
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `MonadThrow` instance (@gcanti)
- `ReaderTask`
- add `Functor` instance (@gcanti)
- add `ApplicativePar` instance (@gcanti)
- add `ApplicativeSeq` instance (@gcanti)
- `ReaderTaskEither`
- add `getApplicativeReaderTaskValidation` constrained instance (@gcanti)
- add `getAltReaderTaskValidation` constrained instance (@gcanti)
- add `Functor` instance (@gcanti)
- add `ApplicativePar` instance (@gcanti)
- add `ApplicativeSeq` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Alt` instance (@gcanti)
- `ReadonlyArray`
- add `chainWithIndex`, #1256 (@OliverJAsh)
- add `Functor` instance (@gcanti)
- add `FunctorWithIndex` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Unfoldable` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `Alternative` instance (@gcanti)
- add `Extend` instance (@gcanti)
- add `Compactable` instance (@gcanti)
- add `Filterable` instance (@gcanti)
- add `FilterableWithIndex` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `FoldableWithIndex` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `TraversableWithIndex` instance (@gcanti)
- add `Witherable` instance (@gcanti)
- `ReadonlyMap`
- add `Functor` instance (@gcanti)
- add `Compactable` instance (@gcanti)
- add `Filterable` instance (@gcanti)
- `ReadonlyNonEmptyArray`
- add `Functor` instance (@gcanti)
- add `FunctorWithIndex` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `FoldableWithIndex` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `TraversableWithIndex` instance (@gcanti)
- add `Alt` instance (@gcanti)
- add `Comonad` instance (@gcanti)
- `ReadonlyRecord`
- add `Functor` instance (@gcanti)
- add `FunctorWithIndex` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Compactable` instance (@gcanti)
- add `Filterable` instance (@gcanti)
- add `FilterableWithIndex` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `TraversableWithIndex` instance (@gcanti)
- add `Witherable` instance (@gcanti)
- `ReadonlyTuple`
- add `Functor` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Semigroupoid` instance (@gcanti)
- add `Comonad` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- `Record`
- add `Functor` instance (@gcanti)
- add `FunctorWithIndex` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Compactable` instance (@gcanti)
- add `Filterable` instance (@gcanti)
- add `FilterableWithIndex` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `TraversableWithIndex` instance (@gcanti)
- add `Witherable` instance (@gcanti)
- `State`
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- `Store`
- add `Functor` instance (@gcanti)
- add `Comonad` instance (@gcanti)
- `StateReaderTaskEither`
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Alt` instance (@gcanti)
- `Task`
- add `Functor` instance (@gcanti)
- add `ApplicativePar` instance (@gcanti)
- add `ApplicativeSeq` instance (@gcanti)
- `TaskEither`
- add `getApplicativeTaskValidation` constrained instance (@gcanti)
- add `getAltTaskValidation` constrained instance (@gcanti)
- add `Functor` instance (@gcanti)
- add `ApplicativePar` instance (@gcanti)
- add `ApplicativeSeq` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Alt` instance (@gcanti)
- `TaskThese`
- add `Functor` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- `These`
- add `getApplicative` constrained instance (@gcanti)
- add `Functor` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- `Traced`
- rename `traced` to `Functor` for consistency (@gcanti)
- `Tree`
- add `Functor` instance (@gcanti)
- add `Applicative` instance (@gcanti)
- add `Monad` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Traversable` instance (@gcanti)
- add `Comonad` instance (@gcanti)
- `Writer`
- add `Functor` instance (@gcanti)
- `Tuple`
- add `Functor` instance (@gcanti)
- add `Bifunctor` instance (@gcanti)
- add `Semigroupoid` instance (@gcanti)
- add `Comonad` instance (@gcanti)
- add `Foldable` instance (@gcanti)
- add `Traversable` instance (@gcanti)
# 2.6.7
- **Polish**
- refine `Either.parseJSON` return type, #1252 (@OliverJAsh)
- add missing `chainW` to `ReaderTask`, #1254 (@adameier)
# 2.6.6
- **Polish**
- `Array`
- export `unfold` (@gcanti)
- make `lookup` data-last (@gcanti)
- make `elem` data-last (@gcanti)
- make `difference` data-last (@gcanti)
- make `intersection` data-last (@gcanti)
- make `union` data-last (@gcanti)
- make `zip` data-last (@gcanti)
- make `cons` data-last (@gcanti)
- `Map`
- make `member` data-last (@gcanti)
- make `elem` data-last (@gcanti)
- make `lookup` data-last (@gcanti)
- make `lookupWithKey` data-last (@gcanti)
- make `isSubmap` data-last (@gcanti)
- `NonEmptyArray`
- make `zip` data-last (@gcanti)
- `ReadonlyArray`
- export `unfold` (@gcanti)
- make `lookup` data-last (@gcanti)
- make `elem` data-last (@gcanti)
- make `difference` data-last (@gcanti)
- make `intersection` data-last (@gcanti)
- make `union` data-last (@gcanti)
- make `zip` data-last (@gcanti)
- make `cons` data-last (@gcanti)
- `ReadonlyMap`
- make `member` data-last (@gcanti)
- make `elem` data-last (@gcanti)
- make `lookup` data-last (@gcanti)
- make `lookupWithKey` data-last (@gcanti)
- make `isSubmap` data-last (@gcanti)
- `ReadonlyNonEmptyArray`
- make `zip` data-last (@gcanti)
- `ReadonlyRecord`
- make `isSubrecord` data-last (@gcanti)
- make `lookup` data-last (@gcanti)
- make `elem` data-last (@gcanti)
- `ReadonlySet`
- make `isSubset` data-last (@gcanti)
- make `elem` data-last (@gcanti)
- make `union` data-last (@gcanti)
- make `intersection` data-last (@gcanti)
- make `difference` data-last (@gcanti)
- `Record`
- make `isSubrecord` data-last (@gcanti)
- make `lookup` data-last (@gcanti)
- make `elem` data-last (@gcanti)
- `Set`
- make `subset` data-last (@gcanti)
- make `elem` data-last (@gcanti)
- make `union` data-last (@gcanti)
- make `intersection` data-last (@gcanti)
- make `difference` data-last (@gcanti)
- `Semigroup`
- make `fold` data-last (@gcanti)
# 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**
- `ReadonlyMap`
- `traverseWithIndex` should sort the keys (@gcanti)
- `ReadonlyRecord`
- `traverseWithIndex` should sort the keys (@gcanti)
# 2.6.3
- **Polish**
- change `ReadonlyNonEmptyArray` definition to get better type inference (@gcanti)
- move `pipe` to `function` module (@gcanti)
- export `sequence` from all modules which admit a `Traversable` instance (@gcanti)
- export a pipeable `traverse` function from all modules which admit a `Traversable` instance (@gcanti)
- export a pipeable `traverseWithIndex` function from all modules which admit a `TraversableWithIndex` instance (@gcanti)
- remove monad transformers imports from all modules (@gcanti)
# 2.6.2
The goal of this release is to make `fp-ts` more "tree shaking" friendly.
- **Polish**
- add `/*@__PURE__*/` comments to pipeables (@gcanti)
- add `/*@__PURE__*/` comments to transformers (@gcanti)
- remove `pipeable.ts` module imports (@gcanti)
# 2.6.1
- **New Feature**
- add W variants, closes #904 (@gcanti)
- `Const`
- add missing instances, #1201 (@gcanti)
- `Date`
- add `eqDate`, `eqMonth`, `eqYear` (@gcanti)
- `Either`
- add `getOrElseW` (@gcanti)
- add `chainW` (@gcanti)
- `Eq`
- add `getMonoid` (@gcanti)
- `IOEither`
- add `getOrElseW` (@gcanti)
- add `chainW` (@gcanti)
- add `chainEitherKW` (@giogonzo)
- `Option`
- add `getOrElseW` (@gcanti)
- `Reader`
- add `chainW` (@gcanti)
- `ReaderEither`
- add `getOrElseW` (@gcanti)
- add `chainW` (@gcanti)
- add `chainEitherKW` (@giogonzo)
- `ReaderTaskEither`
- add `getOrElseW` (@gcanti)
- add `chainW` (@gcanti)
- add `chainEitherKW` (@giogonzo)
- add `chainTaskEitherKW` (@giogonzo)
- add `chainIOEitherKW` (@giogonzo)
- `StateReaderTaskEither`
- add `chainW` (@gcanti)
- add `chainEitherKW` (@giogonzo)
- add `chainTaskEitherKW` (@giogonzo)
- add `chainReaderTaskEitherKW` (@giogonzo)
- add `chainIOEitherKW` (@giogonzo)
- `TaskEither`
- add `getOrElseW` (@gcanti)
- add `chainW` (@gcanti)
- add `chainEitherKW` (@giogonzo)
- add `chainIOEitherKW` (@giogonzo)
- `Tree`
- add `fold` function (@gcanti)
# 2.5.4
- **Polish**
- `StateT`
- add missing `StateM2C` and `StateM3C` (@qlonik)
# 2.5.3
- **Polish**
- `Either`
- add missing instances to `getValidation` (@gcanti)
- `IOEither`
- relax `Bifunctor2C` to `Bifunctor2` in `getIOValidation` (@gcanti)
- `ReaderEither`
- relax `Bifunctor3C` to `Bifunctor3` in `getReaderValidation` (@gcanti)
- `ReaderTaskEither`
- relax `Bifunctor3C` to `Bifunctor3` in `getReaderTaskValidation` (@gcanti)
- `TaskEither`
- relax `Bifunctor2C` to `Bifunctor2` in `getTaskValidation` (@gcanti)
# 2.5.1
- **New Feature**
- `Eq`
- add `eqStrict`, closes #965 (@gcanti)
- `NonEmptyArray`
- add `fold` (@vicrac)
- add `zip`, `zipWith` and `unzip`, closes #1109 (@gcanti)
- `Semigroup`
- add `getIntercalateSemigroup` (@gcanti)
- `Set`
- add `toggle` (@ryota-ka)
- `TaskEither`
- add `tryCatchK` (@DenisFrezzato)
- `These`
- add missing `MonadThrow` instance (@gcanti)
- `ReaderTaskEither`
- add missing `leftReaderTask`, `rightReaderTask` functions (@gcanti)
- `StateReaderTaskEither`
- add missing `Bifunctor`, `Alt` instances (@gcanti)
- **Experimental**
- add `ReadonlyArray` module (@gcanti)
- add `ReadonlyNonEmptyArray` module (@gcanti)
- add `ReadonlySet` module (@gcanti)
- add `ReadonlyMap` module (@gcanti)
- add `ReadonlyRecord` module (@gcanti)
- add `ReadonlyTuple` module (@gcanti)
# 2.4.4
- **Polish**
- add missing `MonadIO4` (@mlegenhausen)
- add missing `MonadTask4` (@mlegenhausen)
- `StateReaderTaskEither`
- add missing `MonadTask4` instance (@mlegenhausen)
- add missing `filterOrElse`, `fromPredicate` combinators (@mlegenhausen)
# 2.4.3
- **Bug Fix**
- don't set `target: es6` in `tsconfig.build-es6.json`, fix #1110 (@gcanti)
# 2.4.2
- **Bug Fix**
- fix `Invariant` definition (@gcanti)
# 2.4.1
- **Polish**
- `NonEmptyArray`
- add overloading to `group` managing non empty arrays, closes #831 (@gcanti)
- `foldMap` and `foldMapWithIndex` now require a `Semigroup` instead of a `Monoid` (@gcanti)
# 2.4.0
- **New Feature**
- add `WriterT` module, closes #1050 (@gcanti)
- add `TheseT` module (@gcanti)
- add `TaskThese` module (@gcanti)
- `function`
- add `tupled`, `untupled` functions, closes #1062 (@gcanti)
- `IOEither`
- add `fromEitherK`, `chainEitherK` (@gcanti)
- `ReaderEither`
- add `fromEitherK`, `chainEitherK` (@gcanti)
- `ReaderTask`
- add `run` (@gcanti)
- add `fromIOK`, `chainIOK`, `fromTaskK`, `chainTaskK` (@gcanti)
- `ReaderTaskEither`
- add `fromEitherK`, `chainEitherK`, `fromIOEitherK`, `chainIOEitherK`, `fromTaskEitherK`, `chainTaskEitherK` (@gcanti)
- `These`
- add `swap` (@gcanti)
- `Ord`
- add `getMonoid` (@vicrac)
- `Ordering`
- add `monoidOrdering` (@gcanti)
- `StateReaderTaskEither`
- add `fromEitherK`, `chainEitherK`, `fromIOEitherK`, `chainIOEitherK`, `fromTaskEitherK`, `chainTaskEitherK`, `fromReaderTaskEitherK`, `chainReaderTaskEitherK` (@gcanti)
- `Task`
- add `fromIOK`, `chainIOK` (@gcanti)
- `TaskEither`
- add `fromEitherK`, `chainEitherK`, `fromIOEitherK`, `chainIOEitherK` (@gcanti)
- **Deprecation**
- `Ord`
- deprecate `getSemigroup` in favor of `getMonoid` (@gcanti)
- `Ordering`
- deprecate `semigroupOrdering` in favor of `monoidOrdering` (@gcanti)
- **Internal**
- use native `Promise.race` in `Task.getRaceMonoid` (@gcanti)
# 2.3.1
- **Bug Fix**
- `Array.ts`
- fix `sortBy` failing on empty list of ords, #1046 (@vicrac)
# 2.3.0
- **New Feature**
- add `ReaderTask` module (@sledorze)
- `ReaderTaskEither`
- add `getReaderTaskValidation` (@sledorze)
- `ReaderEither`
- add `getReaderValidation` (@gcanti)
- `TaskEither`
- improve `getTaskValidation` (@gcanti)
- `IOEither`
- improve `getIOValidation` (@gcanti)
# 2.2.0
- **New Feature**
- add `boolean` module, closes #930 (@giogonzo)
- add `ChainRec` instance to `IO` (@gcanti)
- `NonEmptyArray`
- add `init` (@steida)
- add `Alt` instance (@gcanti)
- **Internal**
- add new 3C variants and related overloads (@sledorze)
# 2.1.2
- **Bug Fix**
- `fromNullable` now uses `NonNullable` in its return type, fixes #1004 (@gcanti)
# 2.1.1
- **Bug Fix**
- add `sequenceT` and `sequenceS` overload signatures for `Kind4`, fixes #969 (@pfgray)
# 2.1.0
- **New Feature**
- add constrained `Filterable` instance to `IOEither`, `TaskEither`, #959 (@giogonzo)
# 2.0.5
- **Bug Fix**
- fix `PipeableApply2C` definition (@gcanti)
# 2.0.4
- **Polish**
- `ReaderTaskEither`
- add missing `bracket` function (@mlegenhausen)
# 2.0.3
- **Bug Fix**
- fix `sequenceT`, `sequenceS` implementations, closes #914 (@gcanti)
# 2.0.2
- **Bug Fix**
- add `reduce` to `FoldableComposition2C1` (@anilanar)
# 2.0.1
- **Bug Fix**
- fix `PipeableBifunctor` definition (@gcanti)
- fix `chunksOf` implementation, #897 (@gcanti)
# 2.0.0
- **Breaking Change**
- remove deprecated APIs (@gcanti)
- remove classes (@gcanti)
- remove all phantom fields (@gcanti)
================================================
FILE: Do.md
================================================
# Do notation
**Cheatsheet**
| Haskell | TypeScript |
| ------------- | ------------------------------ |
| `a <- action` | `bind('a', (scope) => action)` |
| `_ <- action` | `tap((scope) => action)` |
| `return ...` | `map((scope) => ...)` |
**Example**
Haskell
```Haskell
nameDo :: IO ()
nameDo = do putStrLn "What is your first name? "
first <- getLine
putStrLn "And your last name? "
last <- getLine
let full = first ++ " " ++ last
putStrLn ("Pleased to meet you, " ++ full ++ "!")
```
TypeScript
```ts
import { pipe } from 'fp-ts/function'
import * as T from 'fp-ts/Task'
declare const putStrLn: (s: string) => T.Task<void>
declare const getLine: T.Task<string>
const nameDo: T.Task<void> = pipe(
T.Do,
T.tap(() => putStrLn('What is your first name? ')),
T.bind('first', () => getLine),
T.tap(() => putStrLn('And your last name? ')),
T.bind('last', () => getLine),
T.bind('full', ({ first, last }) => T.of(first + ' ' + last)),
T.flatMap(({ full }) => putStrLn('Pleased to meet you, ' + full + '!'))
)
```
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2017-present Giulio Canti
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<h3 align="center">
<a href="https://gcanti.github.io/fp-ts/">
<img src="./docs/fp-ts-logo.png">
</a>
</h3>
<p align="center">
Functional programming in TypeScript
</p>
<p align="center">
<a href="https://github.com/gcanti/fp-ts/actions">
<img src="https://github.com/gcanti/fp-ts/actions/workflows/main.yml/badge.svg?branch=master" alt="build status" height="20">
</a>
<a href="https://www.npmjs.com/package/fp-ts">
<img src="https://img.shields.io/npm/dm/fp-ts.svg" alt="npm downloads" height="20">
</a>
</p>
**📢 Important Announcement: fp-ts is Joining the Effect-TS Ecosystem!**
We are excited to announce that the `fp-ts` project is officially merging with the Effect-TS ecosystem. This is a significant step forward in the functional programming landscape, bringing together two powerful libraries under one roof. Giulio Canti, the author of `fp-ts`, is being welcomed into the Effect organization, promising an exciting future with enhanced capabilities and support.
**What This Means for New Users:**
Effect-TS can be regarded as the successor to `fp-ts v2` and embodies what would be considered `fp-ts v3`. This merger marks a significant evolution in the library's capabilities, integrating more features and functionalities tailored towards robust, type-safe, and scalable functional programming.
For more details on this merger and what it entails, please refer to the official [announcement here](https://dev.to/effect/a-bright-future-for-effect-455m). Additionally, you can explore more about Effect-TS and its offerings on our [website and documentation](https://effect.website/).
# Introduction
`fp-ts` is a library for _typed functional programming_ in TypeScript.
`fp-ts` aims to allow developers to use _popular patterns and abstractions_ that are available in most functional languages. For this, it includes the most popular data types, type classes and abstractions such as [Option](https://gcanti.github.io/fp-ts/modules/Option.ts), [Either](https://gcanti.github.io/fp-ts/modules/Either.ts), [IO](https://gcanti.github.io/fp-ts/modules/IO.ts), [Task](https://gcanti.github.io/fp-ts/modules/Task.ts), [Functor](https://gcanti.github.io/fp-ts/modules/Functor.ts), [Applicative](https://gcanti.github.io/fp-ts/modules/Applicative.ts), [Monad](https://gcanti.github.io/fp-ts/modules/Monad.ts) to empower users to write pure FP apps and libraries built atop higher order abstractions.
A distinctive feature of `fp-ts` with respect to other functional libraries is its implementation of [Higher Kinded Types](<https://en.wikipedia.org/wiki/Kind_(type_theory)>), which TypeScript doesn't support natively.
**Inspired by**
- [Haskell](https://www.haskell.org)
- [PureScript](https://www.purescript.org)
- [Scala](https://www.scala-lang.org)
# Sponsors
<table>
<tr>
<td align="center">
<a href="https://unsplash.com/">
<img src="https://avatars.githubusercontent.com/u/9951955?s=200&v=4" width="200px;" alt="Unsplash" />
</a>
<br />
<b>Unsplash</b>
<br />
<a href="https://unsplash.com/">https://unsplash.com/</a>
<br />
<p width="200px">
The internet’s source for visuals.<br/>
Powered by creators everywhere.
</td>
</tr>
</table>
# Installation
To install the stable version:
```
npm install fp-ts
```
Make sure to always have a single version of `fp-ts` installed in your project. Multiple versions are known to cause `tsc` to hang during compilation. You can check the versions currently installed using `npm ls fp-ts` (make sure there's a single version and all the others are marked as `deduped`).
## TypeScript compatibility
**Strictness** – This library is conceived, tested and is supposed to be consumed by TypeScript with the `strict` flag turned on.
| `fp-ts` version | required `typescript` version |
| --------------- | ----------------------------- |
| 2.0.x+ | 3.5+ |
| 1.15.x+ | 3.1+ |
| <= 1.14.4 | 2.8+ (\*) |
(\*) If you are running `< typescript@3.0.1` you have to polyfill the `unknown` type. You can use [unknown-ts](https://github.com/gcanti/unknown-ts) as a polyfill.
# Documentation
**Disclaimer**. Teaching functional programming is out of scope of this project, so the documentation assumes you already know what FP is.
- [Docs](https://gcanti.github.io/fp-ts)
- [Learning Resources](https://gcanti.github.io/fp-ts/learning-resources/)
- [Ecosystem](https://gcanti.github.io/fp-ts/ecosystem/)
- API Reference
- [version 2.x (current)](https://gcanti.github.io/fp-ts/modules/)
- [version 1.x](https://github.com/gcanti/fp-ts/tree/1.x/docs/modules/)
# Help
If you need help with `fp-ts` check out:
- this [Discord server](https://discord.gg/HVWmBBXM8A)
- the `#fp-ts` channel on [FP slack](https://fpslack.com/).
# Development
- [Code conventions](https://gcanti.github.io/fp-ts/guides/code-conventions)
# License
The MIT License (MIT)
================================================
FILE: code2comment.html
================================================
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>code 2 comment</title>
</head>
<body>
<div id="app">
<textarea id="code" cols="100" rows="20"></textarea>
<textarea id="comment" cols="100" rows="20"></textarea>
<button id="transform">transform</button>
</div>
<script>
const transform = document.getElementById('transform')
const code = document.getElementById('code')
const comment = document.getElementById('comment')
transform.onclick = () => {
comment.value = t(code.value)
}
function t(src) {
const lines = src.split('\n').map((line) => '* ' + line.replace('../src/', 'fp-ts/'))
return '*\n* @example\n' + lines.join('\n') + '\n'
}
</script>
</body>
</html>
================================================
FILE: docs/_config.yml
================================================
remote_theme: pmarsceill/just-the-docs
# Enable or disable the site search
search_enabled: true
# Aux links for the upper right navigation
aux_links:
"Docs":
- "//gcanti.github.io/fp-ts/"
"API Reference":
- "//gcanti.github.io/fp-ts/modules/"
"GitHub":
- "//github.com/gcanti/fp-ts"
================================================
FILE: docs/_sass/custom/custom.scss
================================================
$fp-ts-blue-000: #0088e6;
$fp-ts-blue-100: #0075c5;
$link-color: $fp-ts-blue-000;
$btn-primary-color: $fp-ts-blue-100;
================================================
FILE: docs/ecosystem.md
================================================
---
title: Ecosystem
permalink: /ecosystem/
nav_order: 3
has_children: false
has_toc: false
---
# Ecosystem
## Tooling
- [create-fp-ts-lib](https://github.com/no-day/create-fp-ts-lib) - Bootstrap libraries that follow common fp-ts coding, documentation and testing patterns
- [docs-ts](https://github.com/gcanti/docs-ts) - Documentation generator used by fp-ts and many fp-ts libraries
## Libraries
- [fp-ts-contrib](https://github.com/gcanti/fp-ts-contrib) - A community driven utility package for fp-ts
- [fp-ts-codegen](https://github.com/gcanti/fp-ts-codegen) - TypeScript code generation from a haskell-like syntax for ADT
- [io-ts](https://github.com/gcanti/io-ts) - TypeScript compatible runtime type system for IO validation
- [monocle-ts](https://github.com/gcanti/monocle-ts) - Functional optics: a (partial) porting of scala monocle to
TypeScript
- [spectacles-ts](https://github.com/anthonyjoeseph/spectacles-ts/) - A simple facade built on top of monocle-ts (autocompletes possible combinators)
- [newtype-ts](https://github.com/gcanti/newtype-ts) - Implementation of newtypes in TypeScript
- [logging-ts](https://github.com/gcanti/logging-ts) - Composable loggers for TypeScript
- [logger-fp-ts](https://github.com/thewilkybarkid/logger-fp-ts) - Logger built on top of logging-ts
- [fp-ts-routing](https://github.com/gcanti/fp-ts-routing) - A type-safe bidirectional routing library for TypeScript
- [parser-ts](https://github.com/gcanti/parser-ts) - String parser combinators for TypeScript
- [remote-data-ts](https://github.com/devex-web-frontend/remote-data-ts) - RemoteData type (check [this article](https://medium.com/@gcanti/slaying-a-ui-antipattern-with-flow-5eed0cfb627b))
- [retry-ts](https://github.com/gcanti/retry-ts) - Retry combinators for monadic actions that may fail
- [fp-ts-local-storage](https://github.com/gcanti/fp-ts-local-storage) - fp-ts bindings for LocalStorage
- [circuit-breaker-monad](https://github.com/YBogomolov/circuit-breaker-monad) - Circuit Breaker pattern as a monad
- [waveguide](https://github.com/rzeigler/waveguide) - Bifunctor effect type and concurrent data structures.
- [kleisli-ts](https://github.com/YBogomolov/kleisli-ts) - Kleisli arrows for bifunctor MonadThrow (IOEither, TaskEither)
- [@nll/datum](https://github.com/nullpub/datum) - Datum and DatumEither types, another take on RemoteData and [flow](https://medium.com/@gcanti/slaying-a-ui-antipattern-with-flow-5eed0cfb627b)
- [fetcher-ts](https://github.com/YBogomolov/fetcher-ts) - Type-safe REST HTTP client with io-ts response validation
- [alga-ts](https://github.com/algebraic-graphs/typescript) – Algebraic encoding for graphs, which makes invalid graphs unrepresentable
- [morphic-ts](https://github.com/sledorze/morphic-ts) - Code first Domain modeling with extensive pattern supports (matchers, predicates, lenses) with useful, extensible, customisable derivations (Show, Eq, io-ts, fast-check, jsonSchema, ..).
- [graphics-ts](https://github.com/gcanti/graphics-ts) - A porting of purescript-{canvas, drawing} featuring fp-ts
- [expressive-ts](https://github.com/IMax153/expressive-ts) - Comonadic builders for writing complex regular expressions
- [fp-fetch](https://github.com/monstasat/fp-fetch) - Functional style, non-throwing utils for data fetching
- [fp-ts-std](https://github.com/samhh/fp-ts-std) - The missing pseudo-standard library for fp-ts.
- [fp-ts-lcg](https://github.com/no-day/fp-ts-lcg) - A seeded pseudorandom number generator
- [fp-ts-graph](https://github.com/no-day/fp-ts-graph) - Immutable, functional graph data structure
- [fp-ts-bigint](https://github.com/ericcrosson/fp-ts-bigint) - Opt-in BigInt functions
- [fp-ts-generators](https://github.com/no-day/fp-ts-generators) - Seeded pseudorandom generators for structured data
- [fp-ts-sized-vectors](https://github.com/no-day/fp-ts-sized-vectors) - Fixed size generic vector type carrying its length at the typelevel
- [fp-ts-number-instances](https://github.com/no-day/fp-ts-number-instances) - Not fully law abiding instances for the number type
- [fp-ts-react-stable-hooks](https://github.com/mblink/fp-ts-react-stable-hooks) - Reduce unnecessary rerenders when using fp-ts data types with React hooks
## Bindings
- [fp-ts-rxjs](https://github.com/gcanti/fp-ts-rxjs) - fp-ts bindings for [RxJS](https://rxjs-dev.firebaseapp.com/)
- [fp-ts-fluture](https://github.com/gcanti/fp-ts-fluture) - fp-ts bindings for [Fluture](https://github.com/fluture-js/Fluture)
- [fp-ts-most](https://github.com/joshburgess/fp-ts-most) - fp-ts bindings for [@most/core](https://github.com/cujojs/most)
- [fp-ts-ixjs](https://github.com/werk85/fp-ts-ixjs) - fp-ts bindings for [IxJS](https://github.com/ReactiveX/IxJS)
## Plugins
- [fastify-funky](https://github.com/fastify/fastify-funky) - plugin that adds support for returning fp-ts Either and Task entities as handler execution results for [fastify](https://github.com/fastify/fastify) web framework
================================================
FILE: docs/guides/HKT.md
================================================
---
title: Write type class instances
parent: Guides
nav_order: 2
---
# How to write type class instances for your data type
Let's start from a simple data structure: `Identity`
```ts
// Identity.ts
export type Identity<A> = A
```
## Functor instance
Let's see how to add an instance of the `Functor` type class for `Identity`
```ts
// Identity.ts
import { Functor1 } from 'fp-ts/Functor'
export const URI = 'Identity'
export type URI = typeof URI
declare module 'fp-ts/HKT' {
interface URItoKind<A> {
readonly Identity: Identity<A>
}
}
export type Identity<A> = A
// Functor instance
export const Functor: Functor1<URI> = {
URI,
map: (ma, f) => f(ma)
}
```
Here's the definition of `Functor1`
```ts
// fp-ts/Functor.ts
export interface Functor1<F extends URIS> {
readonly URI: F
readonly map: <A, B>(fa: Kind<F, A>, f: (a: A) => B) => Kind<F, B>
}
```
So what's `URItoKind`, `URIS` and `Kind`?
`URItoKind` is type-level map, it maps a `URI` to a concrete data type, and is populated using the [module augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html) feature
```ts
// fp-ts/HKT.ts
export interface URItoKind<A> {}
```
```ts
// Identity.ts
declare module 'fp-ts/HKT' {
interface URItoKind<A> {
readonly Identity: Identity<A> // maps the key "Identity" to the type `Identity`
}
}
```
`URIS` is just `keyof URItoKind<any>` and is used as a constraint in the `Functor1` interface
`Kind<F, A>` is using `URItoKind` internally so is able to project an abstract data type to a concrete data type.
So if `URI = 'Identity'`, then `Kind<URI, number>` is `Identity<number>`.
## What about type constructors of kind `* -> * -> *`?
There's another triple for that: `URItoKind2`, `URIS2` and `Kind2`
Example: `Either`
```ts
// Either.ts
import { Functor2 } from 'fp-ts/Functor'
export const URI = 'Either'
export type URI = typeof URI
declare module 'fp-ts/HKT' {
interface URItoKind2<E, A> {
readonly Either: Either<E, A>
}
}
export interface Left<E> {
readonly _tag: 'Left'
readonly left: E
}
export interface Right<A> {
readonly _tag: 'Right'
readonly right: A
}
export type Either<E, A> = Left<E> | Right<A>
export const right = <A, E = never>(a: A): Either<E, A> => ({ _tag: 'Right', right: a })
// Functor instance
export const Functor: Functor2<URI> = {
URI,
map: (ma, f) => (ma._tag === 'Left' ? ma : right(f(ma.right)))
}
```
And here's the definition of `Functor2`
```ts
// fp-ts/Functor.ts
export interface Functor2<F extends URIS2> {
readonly URI: F
readonly map: <E, A, B>(fa: Kind2<F, E, A>, f: (a: A) => B) => Kind2<F, E, B>
}
```
## How to type functions which abstracts over type classes
Let's see how to type `lift`
```ts
import { HKT } from 'fp-ts/HKT'
export function lift<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => (fa: HKT<F, A>) => HKT<F, B> {
return (f) => (fa) => F.map(fa, f)
}
```
Here's the definition of `HKT`
```ts
// fp-ts/HKT.ts
export interface HKT<URI, A> {
readonly _URI: URI
readonly _A: A
}
```
The `HKT` type represents a type constructor of kind `* -> *`.
There are other `HKT<n>` types defined in the `fp-ts/HKT.ts`, one for each kind (up to four):
- `HKT2` for type constructors of kind `* -> * -> *`
- `HKT3` for type constructors of kind `* -> * -> * -> *`
- `HKT4` for type constructors of kind `* -> * -> * -> * -> *`
There's a problem though, this doesn't type check
```ts
const double = (n: number): number => n * 2
// v-- the Functor instance of Identity
const doubleIdentity = lift(identity)(double)
```
With the following error
```
Argument of type 'Functor1<"Identity">' is not assignable to parameter of type 'Functor<"Identity">'
```
We need to add some overloading, one for each kind we want to support
```ts
export function lift<F extends URIS2>(
F: Functor2<F>
): <A, B>(f: (a: A) => B) => <E>(fa: Kind2<F, E, A>) => Kind2<F, E, B>
export function lift<F extends URIS>(F: Functor1<F>): <A, B>(f: (a: A) => B) => (fa: Kind<F, A>) => Kind<F, B>
export function lift<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => (fa: HKT<F, A>) => HKT<F, B>
export function lift<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => (fa: HKT<F, A>) => HKT<F, B> {
return (f) => (fa) => F.map(fa, f)
}
```
Now we can lift `double` to both `Identity` and `Either`
```ts
// v-- the Functor instance of Identity
const doubleIdentity = lift(identity)(double)
// v-- the Functor instance of Either
const doubleEither = lift(either)(double)
```
- `doubleIdentity` has type `(fa: Identity<number>) => Identity<number>`
- `doubleEither` has type `<E>(fa: Either<E, number>) => Either<E, number>`
================================================
FILE: docs/guides/code-conventions.md
================================================
---
title: Code Conventions
parent: Guides
nav_order: 1
---
# Code Conventions
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of contents**
- [Module structure](#module-structure)
- [FAQ](#faq)
- [What a `C` suffix means, e.g. `Functor2C` vs `Functor2`](#what-a-c-suffix-means-eg-functor2c-vs-functor2)
- [What an `E` suffix means, e.g. `matchE`](#what-an-e-suffix-means-eg-matche)
- [What a `K` suffix means, e.g. `fromEitherK` or `chainEitherK`](#what-a-k-suffix-means-eg-fromeitherk-or-chaineitherk)
- [What a `T` suffix means, e.g. `sequenceT`](#what-a-t-suffix-means-eg-sequencet)
- [What a `W` suffix means, e.g. `chainW` or `chainEitherKW`](#what-a-w-suffix-means-eg-chainw-or-chaineitherkw)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## Import Statements
To properly import modules from `fp-ts`, you should use the following syntax:
```ts
import ... from 'fp-ts/<module>'
```
For instance, when importing the `Option` module, you can use the following code:
```ts
import * as Option from 'fp-ts/Option'
```
This ensures that you're importing the required modules correctly.
## Module structure
In general a module containing the definition of a data structure has the following structure
- `URI` definition and module augmentation
- data structure definition
- companion functions
- instance functions (private)
- type class instance definitions (either constants or functions)
## FAQ
### What a `C` suffix means, e.g. `Functor2C` vs `Functor2`
The naming convention is:
- the number means the kind
- `C` means *C*onstrained
| Kind | Type class | Type defunctionalization | Note |
| ------------------ | -------------------- | ------------------------ | -------------------------------------------------------- |
| all | `Functor<F>` | `HKT<F, A>` | |
| `* -> *` | `Functor1<F>` | `Kind<F, A>` | |
| `* -> * -> *` | `Functor2<F>` | `Kind2<F, E, A>` | |
| `* -> * -> *` | `Functor2C<F, E>` | `Kind2<F, E, A>` | A variant of `Functor2` where `E` is fixed |
| `* -> * -> * -> *` | `Functor3<F>` | `Kind3<F, R, E, A>` | |
| `* -> * -> * -> *` | `Functor3C<F, R, E>` | `Kind3<F, R, E, A>` | A variant of `Functor3` where both `R` and `E` are fixed |
**Example** `Functor`
The base definition
```ts
export interface Functor<F> {
readonly URI: F
readonly map: <A, B>(fa: HKT<F, A>, f: (a: A) => B) => HKT<F, B>
}
```
The definition for type constructors of kind `* -> * -> *` (e.g. `Either`)
```ts
export interface Functor2<F extends URIS2> {
readonly URI: F
// v-- here E is free
readonly map: <E, A, B>(fa: Kind2<F, E, A>, f: (a: A) => B) => Kind2<F, E, B>
}
```
The definition for type constructors that start with kind `* -> * -> *` but need to be constrained in order to admit an instance (e.g. `Validation`).
```ts
// this fixes E --v
export interface Functor2C<F extends URIS2, E> {
readonly URI: F
readonly _E: E
// v-- here E is fixed ---------------v
readonly map: <A, B>(fa: Kind2<F, E, A>, f: (a: A) => B) => Kind2<F, E, B>
}
```
For example, `Validation` admits a `Functor` instance only if you provide a `Semigroup` instance for the failure part
```ts
// this fixes E --v v-- here E is fixed
const getFunctor = <E>(S: Semigroup<E>): Functor2C<"Validation", E> = { ... }
```
### What an `E` suffix means, e.g. `matchE`
`E` means *E*ffect. An example of its use is in the `matchE` destructor on monad transformers like `TaskOption` or `ReaderTaskEither`.
**Example**
Both of these destructions result in a `Task<number>`, but in the case of `matchE` an effect (in this case in the form of a `Task`) is returned on match.
```ts
import * as T from 'fp-ts/Task'
import * as TO from 'fp-ts/TaskOption'
import { pipe } from 'fp-ts/function'
const value = TO.of('hello')
// T.Task<number>
pipe(
value,
TO.match(
() => 0,
(str) => str.length
)
)
// T.Task<number>
pipe(
value,
TO.matchE(
() => T.of(0),
(str) => T.of(str.length)
)
)
```
### What a `K` suffix means, e.g. `fromEitherK` or `chainEitherK`
`K` means *K*leisli. A _Kleisli arrow_ is a function with the following signature
```ts
;(a: A) => F<B>
```
where `F` is a type constructor.
**Example**
Let's say we have the following parser
```ts
import * as E from 'fp-ts/Either'
function parse(s: string): E.Either<Error, number> {
const n = parseFloat(s)
return isNaN(n) ? E.left(new Error(`cannot decode ${JSON.stringify(s)} to number`)) : E.right(n)
}
```
and a value of type `IOEither<Error, string>`
```ts
import * as IE from 'fp-ts/IOEither'
const input: IE.IOEither<Error, string> = IE.right('foo')
```
how can we parse `input`?
We could lift the Kleisli arrow `parse`, i.e. transform a function
```ts
;(s: string) => E.Either<Error, number>
```
into a function
```ts
;(s: string) => IE.IOEither<Error, number>
```
That's what `fromEitherK` is all about
```ts
import { pipe } from 'fp-ts/function'
pipe(input, IE.chain(IE.fromEitherK(parse)))() // left(new Error('cannot decode "foo" to number'))
// or with less boilerplate
pipe(input, IE.chainEitherK(parse))() // left(new Error('cannot decode "foo" to number'))
```
### What a `T` suffix means, e.g. `sequenceT`
in `sequenceT` means *T*uple, I borrowed the name from the corresponding [Haskell function](http://hackage.haskell.org/package/tuple-0.3.0.2/docs/Data-Tuple-Sequence.html)
However usually it means *T*ransformer like in "monad transformers" (e.g. `OptionT`, `EitherT`, `ReaderT`, `StateT`)
### What a `W` suffix means, e.g. `chainW` or `chainEitherKW`
`W` means *W*iden. Functions that end with `W` are able to aggregate errors into a union (for `Either` based data types) or environments into an intersection (for `Reader` based data types).
**Example**
```ts
import * as E from 'fp-ts/Either'
import * as TE from 'fp-ts/TaskEither'
import { pipe } from 'fp-ts/pipeable'
declare function parseString(s: string): E.Either<string, number>
declare function fetchUser(id: number): TE.TaskEither<Error, User>
// this raises an error because: Type 'string' is not assignable to type 'Error'
const program_ = (s: string) => pipe(s, TE.fromEitherK(parseString), TE.chain(fetchUser))
// const program: (s: string) => TE.TaskEither<string | Error, User>
const program = (s: string) => pipe(s, TE.fromEitherK(parseString), TE.chainW(fetchUser))
```
================================================
FILE: docs/guides/do-notation.md
================================================
---
title: Do notation
parent: Guides
nav_order: 4
---
# Do Notation
Both [Haskell](https://wiki.haskell.org/Monad#do-notation)
and [PureScript](https://github.com/purescript/documentation/blob/master/language/Syntax.md#do-notation)
languages provide syntactic sugar for working with monads in the form of do notation.
`fp-ts` provides it's own implementation of do notation which can help to simplify effectful
code.
Let's take a look at an example of how do notation can help to simplify our code. Here we have
a bit of code which reads two values from the command line, prints them and stores them
in an object with `x` and `y` properties.
```ts
import { pipe } from 'fp-ts/function'
import * as T from 'fp-ts/Task'
declare const print: (s: string) => T.Task<void>
declare const readLine: T.Task<string>
const main: T.Task<{ x: string; y: string }> = pipe(
readLine,
T.map((x) => ({ x })),
T.flatMap(({ x }) =>
pipe(
readLine,
T.map((y) => ({ x, y }))
)
),
T.tap(({ x }) => print(x)),
T.tap(({ y }) => print(y))
)
```
Notice how we need a nested `pipe` to allow the combination of `x` and `y` values into a single
object.
Here's how we can write `main` with do notation (we'll call it `mainDo`):
```ts
const mainDo: T.Task<{ x: string; y: string }> = pipe(
T.Do,
T.bind('x', () => readLine),
T.bind('y', () => readLine),
T.tap(({ x }) => print(x)),
T.tap(({ y }) => print(y))
)
```
This will look very familiar to those who have prior experience with Purescript or Haskell
where we could write something like:
```haskell
main :: IO (String, String)
main = do
x <- readLn
y <- readLn
print x
print y
return (x, y)
```
Note that due to the lack of type-classes in Typescript, when working with `fp-ts` we need to
import everything from the appropriate module. In the previous example, we use specific `Do`,
`bind`, `map` and `chainFirst` functions imported from the `Task` module as we were working
with the `Task` type.
If we were to write the same code using the `IO` monad, we would need to import everything from the `IO`
module like so:
```ts
import { pipe } from 'fp-ts/function'
import * as IO from 'fp-ts/IO'
declare const print: (s: string) => IO.IO<void>
declare const readLine: IO.IO<string>
const mainDo: IO.IO<{ x: string; y: string }> = pipe(
IO.Do,
IO.bind('x', () => readLine),
IO.bind('y', () => readLine),
IO.tap(({ x }) => print(x)),
IO.tap(({ y }) => print(y))
)
```
## Examples
Using `bindTo`:
```ts
import { pipe } from 'fp-ts/function'
import * as T from 'fp-ts/Task'
declare const print: (s: string) => T.Task<void>
declare const readLine: T.Task<string>
pipe(
readLine,
T.bindTo('x'),
T.bind('y', () => readLine),
T.tap(({ x }) => print(x)),
T.tap(({ y }) => print(y))
)
```
Performing actions in parallel with `apS`:
```ts
import { pipe } from 'fp-ts/function'
import * as T from 'fp-ts/Task'
declare const encryptValue: (val: string) => T.Task<string>
pipe(
T.Do,
T.apS('x', encryptValue('hello')),
T.apS('y', encryptValue('world')),
T.map(({ x, y }) => {
/* ... */
})
)
```
# FAQ
> What does `IO.Do` do exactly?
`IO.Do` is just an alias for `IO.of({})` where `{}` is an empty record.
You build up a record using `bind` which accepts a key and a function that accepts the current state of the record and returns an effect of some value to store under the key.
The record becomes kind of like a scope to put intermediate values in when you are chaining effects.
================================================
FILE: docs/guides/index.md
================================================
---
title: Guides
permalink: /guides/
nav_order: 5
has_children: true
has_toc: true
---
# Guides
================================================
FILE: docs/guides/purescript.md
================================================
---
title: Migrate from PureScript/Haskell
parent: Guides
nav_order: 3
---
# Migrate from PureScript/Haskell
This guide shows you how to use `fp-ts` concepts if you have prior experience with [PureScript](http://www.purescript.org/) or [Haskell](https://www.haskell.org/).
---
## Do notation
PureScript
```purescript
do
print "foo"
print "bar"
x <- readLine
print x
```
TypeScript
```ts
import { pipe } from 'fp-ts/function'
import * as T from 'fp-ts/Task'
declare const print: (s: string) => T.Task<void>
declare const readLine: T.Task<string>
pipe(
T.Do,
T.tap(() => print('foo')),
T.tap(() => print('bar')),
T.bind('x', () => readLine),
T.flatMap(({ x }) => print(x))
)
```
## Data
PureScript
```purescript
-- ↓-- type
data Foo = Bar String | Baz Boolean
-- ↑------------↑-- constructors
```
TypeScript
```ts
interface Bar {
readonly _tag: 'Bar'
readonly value: string
}
interface Baz {
readonly _tag: 'Baz'
readonly value: boolean
}
// type
type Foo = Bar | Baz
// constructors
const Bar = (value: string): Foo => ({ _tag: 'Bar', value })
const Baz = (value: boolean): Foo => ({ _tag: 'Baz', value })
```
## Polymorphic data
PureScript
```purescript
data Option a = None | Some a
```
TypeScript
```ts
export const URI = 'Option'
export type URI = typeof URI
declare module 'fp-ts/HKT' {
interface URItoKind<A> {
readonly [URI]: Option<A>
}
}
export interface None {
readonly _tag: 'None'
}
export interface Some<A> {
readonly _tag: 'Some'
readonly value: A
}
export type Option<A> = None | Some<A>
export const none: Option<never> = { _tag: 'None' }
export const some = <A>(a: A): Option<A> => ({ _tag: 'Some', value: a })
```
## Pattern matching
PureScript
```purescript
maybe :: forall a b. b -> (a -> b) -> Option a -> b
maybe b _ None = b
maybe _ f (Some a) = f a
```
TypeScript
```ts
// here TypeScript also provides exhaustiveness check
const maybe =
<A, B>(onNone: () => B, onSome: (a: A) => B) =>
(fa: Option<A>): B => {
switch (fa._tag) {
case 'None':
return onNone()
case 'Some':
return onSome(fa.value)
}
}
```
## Type classes
PureScript
```purescript
class Functor f where
map :: forall a b. (a -> b) -> f a -> f b
```
TypeScript
```ts
export interface Functor<F> {
readonly URI: F
readonly map: <A, B>(fa: HKT<F, A>, f: (a: A) => B) => HKT<F, B>
}
export interface Functor1<F extends URIS> {
readonly URI: F
readonly map: <A, B>(fa: Kind<F, A>, f: (a: A) => B) => Kind<F, B>
}
export interface Functor2<F extends URIS2> {
readonly URI: F
readonly map: <E, A, B>(fa: Kind2<F, E, A>, f: (a: A) => B) => Kind2<F, E, B>
}
// etc...
```
## Instances
PureScript
```purescript
instance functorOption :: Functor Option where
map fn (Some x) = Some (fn x)
map _ _ = None
```
TypeScript
```ts
import { Functor1 } from 'fp-ts/Functor'
import { pipe } from 'fp-ts/function'
const functorOption: Functor1<URI> = {
URI,
map: (fa, f) =>
pipe(
fa,
maybe(
() => none,
(a) => some(f(a))
)
)
}
```
## Type constraints
PureScript
```purescript
instance semigroupOption :: Semigroup a => Semigroup (Option a) where
append None y = y
append x None = x
append (Some x) (Some y) = Some (x <> y)
instance monoidOption :: Semigroup a => Monoid (Option a) where
mempty = None
```
TypeScript
```ts
import { Semigroup } from 'fp-ts/Semigroup'
import { Monoid } from 'fp-ts/Monoid'
// ↓ the constraint is implemented as an additional parameter
function getMonoid<A>(S: Semigroup<A>): Monoid<Option<A>> {
return {
concat: (x, y) => {
if (x._tag === 'Some' && y._tag === 'Some') {
return some(S.concat(x.value, y.value))
} else if (x._tag === 'Some') {
return y
} else {
return x
}
},
empty: none
}
}
```
## Where's my `f <$> fa <*> fb`?
A few options:
```ts
import * as T from 'fp-ts/Task'
import { pipe } from 'fp-ts/function'
declare const fa: T.Task<number>
declare const fb: T.Task<string>
declare const f: (a: number) => (b: string) => boolean
const result1 = pipe(fa, T.map(f), T.ap(fb))
// ..or..
const result2 = pipe(T.of(f), T.ap(fa), T.ap(fb))
```
================================================
FILE: docs/guides/upgrade-to-v2.md
================================================
---
title: Upgrade to fp-ts 2.x
parent: Guides
nav_order: 5
---
# Upgrade to version 2.x
`fp-ts@2.x` brings with it some major improvements, but also breaking changes and the removal of deprecated APIs. This document will help you understand what changed and how you can upgrade your existing codebase.
{: .fs-6 .fw-300 }
---
The major changes in `fp-ts@2.x` are:
- Requires TypeScript 3.5+
- `fp-ts@1.19.x` has been released with backported 2.x features for a gradual upgrade path
- Data types are no longer implemented as classes, resulting in a new API using `pipe`
- The `run()` method on `IO`, `Task`, etc. has been replaced with a thunk
- Functions accepting fallback values are now always lazy (e.g. `getOrElseL` is now just `getOrElse`)
- Deprecations
- `HKT`: Replaced `Type<n>` with `Kind<n>`
- Replaced `Setoid` with `Eq`
- Several modules were removed, e.g. `Exception`, `Free`, `StrMap`, `Trace`, `Validation`, …
- Read the [full changelog](https://github.com/gcanti/fp-ts/pull/881) for all the changes
## Upgrading from version 1.x
You can gradually upgrade your existing codebase using the `fp-ts@1.19.x` release; the new `fp-ts@2.x` APIs have been backported to this release.
1. Upgrade TypeScript to version 3.5+
1. Install `fp-ts@1.19.x`, which contains the new `fp-ts@2.x` APIs
1. Optional: activate the `@obsolete` rule for `tslint` to get guidance on what to change
1. Familiarise yourself with [the new API](https://github.com/gcanti/fp-ts/pull/881)
1. Gradually replace the existing code with the new API
1. Upgrade to `fp-ts@2.x` and make sure to also upgrade all dependencies that rely on `fp-ts`
### tslint rule
In order to make easier to spot all the occurrences of chainable APIs without depending on `@deprecated`, which would force you to migrate in one shot, a custom tslint rule is provided (`@obsolete`).
Add the following lines to your `tslint.json` to turn the `@obsolete` rule on:
```diff
{
+ "rulesDirectory": ["./node_modules/fp-ts/rules"],
"rules": {
+ "obsolete": true
}
}
```
This rule is available in the [1.19.x branch](https://github.com/gcanti/fp-ts/blob/1.19.5/rules/obsoleteRule.js).
### Dependencies
Don't forget to update your dependencies: libraries that use `fp-ts` like [io-ts](https://github.com/gcanti/io-ts) or [monocle-ts](https://github.com/gcanti/monocle-ts) have to be upgraded to their `fp-ts@2.x` compatible versions.
## The new API
In `fp-ts@2.x` data types are no longer implemented with classes; the biggest change resulting from this is that the chainable API has been removed. As an alternative, a `pipe` function is provided, along with suitable data-last top level functions (one for each deprecated method). This is best shown with an example:
v1 (deprecated)
{: .label .label-red .mt-5 }
```ts
import * as O from 'fp-ts/Option'
O.some(1)
.map((n) => n * 2)
.chain((n) => (n === 0 ? O.none : O.some(1 / n)))
.filter((n) => n > 1)
.foldL(
() => 'ko',
() => 'ok'
)
```
v2 (new)
{: .label .label-green .mt-5 }
```ts
import * as O from 'fp-ts/Option'
import { pipe } from 'fp-ts/pipeable'
pipe(
O.some(1),
O.map((n) => n * 2),
O.chain((n) => (n === 0 ? O.none : O.some(1 / n))),
O.filter((n) => n > 1),
O.fold(
() => 'ko',
() => 'ok'
)
)
```
We recommend to use `pipe` even if you work with just one function, as it allows TypeScript to infer the types automatically. It's also easier to migrate existing code, because the argument order remains the same.
```ts
import * as O from 'fp-ts/Option'
import { pipe } from 'fp-ts/function'
pipe(
O.some(1),
O.fold(
() => 'ko',
(n) => `ok: ${n}`
)
)
```
If you are interested, read about the [benefits of the new API](https://github.com/gcanti/fp-ts/issues/823#issuecomment-486066792) in the technical discussion leading to `fp-ts@2.x`.
### Replacement of the `run()` method
The `run()` method on `IO`, `Task`, etc. has been replaced with a thunk:
v1 (deprecated)
{: .label .label-red .mt-5 }
```ts
import { Task } from 'fp-ts/Task'
const deepThought = new Task<number>(() => Promise.resolve(42))
deepThought.run().then((n) => {
console.log(`The answer is ${n}.`)
})
```
v2 (new)
{: .label .label-green .mt-5 }
```ts
import { Task } from 'fp-ts/Task'
const deepThought: Task<number> = () => Promise.resolve(42)
deepThought().then((n) => {
console.log(`The answer is ${n}.`)
})
```
### Functions accepting fallback values are now always lazy
In many places `fp-ts@1.x` provided two versions of methods:
v1 (deprecated)
{: .label .label-red .mt-5 }
```ts
import * as O from 'fp-ts/Option'
O.some(1).getOrElse(0) // Direct
O.some(1).getOrElseL(() => 0) // Lazy, i.e. only run if needed
```
v2 (new)
{: .label .label-green .mt-5 }
In `fp-ts@2.x` the API has been simplified, only the lazy variants have been kept with the `L` suffix removed.
```ts
import * as O from 'fp-ts/Option'
import { pipe } from 'fp-ts/function'
pipe(
O.some(1),
O.getOrElse(() => 0)
)
```
### Removed modules
- `Exception`
- `Free`
- `FreeGroup`
- `IxIO`
- `IxMonad`
- `Monoidal`
- `Pair`
- `StrMap` (use [Record](../modules/Record.ts) instead)
- `Trace`
- `Validation` (use [Either](../modules/Either.ts)'s `getValidation`)
- `Zipper`
## References
If you're interested in reading up on how this release came to be, have a look at the following discussions:
- The technical [discussion leading to v2](https://github.com/gcanti/fp-ts/issues/823)
- [Version 1.19 (backport)](https://github.com/gcanti/fp-ts/pull/881)
- [The 2.0.0 release](https://github.com/gcanti/fp-ts/commit/7bda18e34eed996a08afdd6a0a61025087f99593)
================================================
FILE: docs/index.md
================================================
---
title: Introduction
permalink: /
nav_order: 1
has_children: false
has_toc: false
---
<img alt="fp-ts logo" src="./fp-ts-logo.png" style="display: block; width: 200px; margin-bottom: 2em;">
# Typed functional programming in TypeScript
`fp-ts` provides developers with popular patterns and reliable abstractions from typed functional languages in TypeScript.
{: .fs-6 .fw-300 }
**Disclaimer**. Teaching functional programming is out of scope of this project, so the documentation assumes you already know what FP is.
## Core Concepts
The goal of `fp-ts` is to empower developers to write pure FP apps and libraries built atop higher order abstractions. It includes the most popular data types, type classes, and abstractions from languages like [Haskell](https://www.haskell.org), [PureScript](https://www.purescript.org), and [Scala](https://www.scala-lang.org).
## Functions
Functional programming is all about pure functions and how to compose them into bigger structures. `fp-ts` provides a few general [functions](./modules/function.ts.html) to support you with composition, constant functions, and more.
## Data Types
Data types are the practical part of `fp-ts`: you can instantiate them with your data to gain properties and functionality that are useful for solving a specific need. Because data types all share common interfaces (through [type classes](#type-classes)), once you learn how to use one data type, you can apply the same concepts to the others.
Many functions in `fp-ts` use [ad hoc polymorphism](https://en.wikipedia.org/wiki/Ad_hoc_polymorphism), meaning that they have a single implementation that can deal with arguments of different types. To make this work, it is often necessary to provide a data type _instance_ that provides functionality that is specific to the data type.
**Note**. Data types are not stack safe and there is no trampolining implementation. But for traversing and sequencing lists there is a stack safe and optimized version in each data types.
## Type Classes
Type classes provide the theoretical underpinnings of `fp-ts`: they describe what you can do with your data. To guarantee that they can be safely composed, they are built on laws rooted in abstract algebra and [category theory](https://en.wikipedia.org/wiki/Category_theory).
## Higher Kinded Types
A distinctive feature of `fp-ts` with respect to other functional libraries is its implementation of [Higher Kinded Types](<https://en.wikipedia.org/wiki/Kind_(type_theory)>), which TypeScript doesn't support natively. The idea for emulating higher kinded types in TypeScript is based on [Lightweight higher-kinded polymorphism](https://www.cl.cam.ac.uk/~jdy22/papers/lightweight-higher-kinded-polymorphism.pdf).
================================================
FILE: docs/learning-resources.md
================================================
---
title: Learning Resources
permalink: /learning-resources/
nav_order: 2
has_children: false
has_toc: false
---
# Learning Resources
- [Mostly adequate guide to FP](https://github.com/MostlyAdequate/mostly-adequate-guide) by [@DrBoolean](https://github.com/DrBoolean)
- [The State monad](https://paulgray.net/the-state-monad/) by Paul Gray
- [Functional Programming with TypeScript](https://www.youtube.com/playlist?list=PLuPevXgCPUIMbCxBEnc1dNwboH6e2ImQo) by Sahand Javid
- [fp-ts Tutorial series on YouTube](https://www.youtube.com/playlist?list=PLUMXrUa_EuePN94nJ2hAui5nWDj8RO3lH) by [@MrFunctor](https://github.com/MrFunctor)
## Getting started with fp-ts series
- [Interoperability with non functional code](https://dev.to/gcanti/interoperability-with-non-functional-code-using-fp-ts-432e)
- [Eq](https://dev.to/gcanti/getting-started-with-fp-ts-setoid-39f3)
- [Ord](https://dev.to/gcanti/getting-started-with-fp-ts-ord-5f1e)
- [Semigroup](https://dev.to/gcanti/getting-started-with-fp-ts-semigroup-2mf7)
- [Monoid](https://dev.to/gcanti/getting-started-with-fp-ts-monoid-ja0)
- [Category](https://dev.to/gcanti/getting-started-with-fp-ts-category-4c9a)
- [Functor](https://dev.to/gcanti/getting-started-with-fp-ts-functor-36ek)
- [Applicative](https://dev.to/gcanti/getting-started-with-fp-ts-applicative-1kb3)
- [Monad](https://dev.to/gcanti/getting-started-with-fp-ts-monad-6k)
- [Either vs Validation](https://dev.to/gcanti/getting-started-with-fp-ts-either-vs-validation-5eja)
- [IO](https://dev.to/gcanti/getting-started-with-fp-ts-io-36p6)
- [Reader](https://dev.to/gcanti/getting-started-with-fp-ts-reader-1ie5)
## Functional design series
- [Combinators Part I](https://dev.to/gcanti/functional-design-combinators-14pn)
- [Combinators Part II](https://dev.to/gcanti/functional-design-how-to-make-the-time-combinator-more-general-3fge)
- [Tagless final](https://dev.to/gcanti/functional-design-tagless-final-332k)
- [Smart constructors](https://dev.to/gcanti/functional-design-smart-constructors-14nb)
- [Introduction to property based testing](https://dev.to/gcanti/introduction-to-property-based-testing-17nk)
- [Algebraic Data Types](https://dev.to/gcanti/functional-design-algebraic-data-types-36kf)
## Advanced code examples
- "`fp-ts` to the max" (TypeScript port of John De Goes's ["FP to the max"](https://www.youtube.com/watch?v=sxudIMiOo68) in Scala)
- [Part I](https://github.com/gcanti/fp-ts/blob/master/examples/fp-ts-to-the-max-I.ts)
- [Part II](https://github.com/gcanti/fp-ts/blob/master/examples/fp-ts-to-the-max-II.ts)
## Community documentation
- [fp-ts recipes](https://grossbart.github.io/fp-ts-recipes/) – A collection of practical recipes for working with `fp-ts`
- [Mostly adequate guide to FP-TS](https://cjonas.gitbook.io/mostly-adequate-fp-ts/) partial rewrite by ChuckJonas
- [Book: Introduction to Functional Programming by Giulio Canti](https://github.com/enricopolanski/functional-programming) English translation by Enrico Polanski
## Community Blog Posts
- [When An Error Is Not An Exception](https://dev.to/vncz/forewords-and-domain-model-1p13) — How we rewrote the core of Prism to make it almost totally functional
- [Introduction series to FP-TS](https://ybogomolov.me/01-higher-kinded-types) by Yuriy Bogomolov
- [The ReaderTaskMonad](https://andywhite.xyz/posts/) by Andy White
- [FP-TS for HTTP-requests](https://kimmosaaskilahti.fi/blog/2019/08/29/using-fp-ts-for-http-requests-and-validation/) by Kimmo Sasskilahti
- [Basic introduction to FP-TS](https://davetayls.me/blog/2018/06/09/fp-ts-02-handling-error-cases) by Dave Tayls
- [Practical guide to FP-TS](https://rlee.dev/practical-guide-to-fp-ts-part-1) by Ryan Lee
================================================
FILE: docs/modules/Alt.ts.md
================================================
---
title: Alt.ts
nav_order: 1
parent: Modules
---
## Alt overview
The `Alt` type class identifies an associative operation on a type constructor. It is similar to `Semigroup`, except
that it applies to types of kind `* -> *`, like `Array` or `Option`, rather than concrete types like `string` or
`number`.
`Alt` instances are required to satisfy the following laws:
1. Associativity: `A.alt(A.alt(fa, ga), ha) <-> A.alt(fa, A.alt(ga, ha))`
2. Distributivity: `A.map(A.alt(fa, ga), ab) <-> A.alt(A.map(fa, ab), A.map(ga, ab))`
Added in v2.0.0
---
<h2 class="text-delta">Table of contents</h2>
- [model](#model)
- [Alt (interface)](#alt-interface)
- [Alt1 (interface)](#alt1-interface)
- [Alt2 (interface)](#alt2-interface)
- [Alt2C (interface)](#alt2c-interface)
- [Alt3 (interface)](#alt3-interface)
- [Alt3C (interface)](#alt3c-interface)
- [Alt4 (interface)](#alt4-interface)
- [utils](#utils)
- [altAll](#altall)
---
# model
## Alt (interface)
**Signature**
```ts
export interface Alt<F> extends Functor<F> {
readonly alt: <A>(fa: HKT<F, A>, that: LazyArg<HKT<F, A>>) => HKT<F, A>
}
```
Added in v2.0.0
## Alt1 (interface)
**Signature**
```ts
export interface Alt1<F extends URIS> extends Functor1<F> {
readonly alt: <A>(fa: Kind<F, A>, that: LazyArg<Kind<F, A>>) => Kind<F, A>
}
```
Added in v2.0.0
## Alt2 (interface)
**Signature**
```ts
export interface Alt2<F extends URIS2> extends Functor2<F> {
readonly alt: <E, A>(fa: Kind2<F, E, A>, that: LazyArg<Kind2<F, E, A>>) => Kind2<F, E, A>
}
```
Added in v2.0.0
## Alt2C (interface)
**Signature**
```ts
export interface Alt2C<F extends URIS2, E> extends Functor2C<F, E> {
readonly alt: <A>(fa: Kind2<F, E, A>, that: LazyArg<Kind2<F, E, A>>) => Kind2<F, E, A>
}
```
Added in v2.0.0
## Alt3 (interface)
**Signature**
```ts
export interface Alt3<F extends URIS3> extends Functor3<F> {
readonly alt: <R, E, A>(fa: Kind3<F, R, E, A>, that: LazyArg<Kind3<F, R, E, A>>) => Kind3<F, R, E, A>
}
```
Added in v2.0.0
## Alt3C (interface)
**Signature**
```ts
export interface Alt3C<F extends URIS3, E> extends Functor3C<F, E> {
readonly alt: <R, A>(fa: Kind3<F, R, E, A>, that: LazyArg<Kind3<F, R, E, A>>) => Kind3<F, R, E, A>
}
```
Added in v2.2.0
## Alt4 (interface)
**Signature**
```ts
export interface Alt4<F extends URIS4> extends Functor4<F> {
readonly alt: <S, R, E, A>(fa: Kind4<F, S, R, E, A>, that: LazyArg<Kind4<F, S, R, E, A>>) => Kind4<F, S, R, E, A>
}
```
Added in v2.0.0
# utils
## altAll
**Signature**
```ts
export declare function altAll<F extends URIS4>(
F: Alt4<F>
): <S, R, E, A>(startWith: Kind4<F, S, R, E, A>) => (as: ReadonlyArray<Kind4<F, S, R, E, A>>) => Kind4<F, S, R, E, A>
export declare function altAll<F extends URIS3>(
F: Alt3<F>
): <R, E, A>(startWith: Kind3<F, R, E, A>) => (as: ReadonlyArray<Kind3<F, R, E, A>>) => Kind3<F, R, E, A>
export declare function altAll<F extends URIS3, E>(
F: Alt3C<F, E>
): <R, A>(startWith: Kind3<F, R, E, A>) => (as: ReadonlyArray<Kind3<F, R, E, A>>) => Kind3<F, R, E, A>
export declare function altAll<F extends URIS2>(
F: Alt2<F>
): <E, A>(startWith: Kind2<F, E, A>) => (as: ReadonlyArray<Kind2<F, E, A>>) => Kind2<F, E, A>
export declare function altAll<F extends URIS2, E>(
F: Alt2C<F, E>
): <A>(startWith: Kind2<F, E, A>) => (as: ReadonlyArray<Kind2<F, E, A>>) => Kind2<F, E, A>
export declare function altAll<F extends URIS>(
F: Alt1<F>
): <A>(startWith: Kind<F, A>) => (as: ReadonlyArray<Kind<F, A>>) => Kind<F, A>
export declare function altAll<F>(F: Alt<F>): <A>(startWith: HKT<F, A>) => (as: ReadonlyArray<HKT<F, A>>) => HKT<F, A>
```
Added in v2.11.0
================================================
FILE: docs/modules/Alternative.ts.md
================================================
---
title: Alternative.ts
nav_order: 2
parent: Modules
---
## Alternative overview
The `Alternative` type class extends the `Alt` type class with a value that should be the left and right identity for `alt`.
It is similar to `Monoid`, except that it applies to types of kind `* -> *`, like `Array` or `Option`, rather than
concrete types like `string` or `number`.
`Alternative` instances should satisfy the following laws:
1. Left identity: `A.alt(zero, fa) <-> fa`
2. Right identity: `A.alt(fa, zero) <-> fa`
3. Annihilation: `A.map(zero, f) <-> zero`
4. Distributivity: `A.ap(A.alt(fab, gab), fa) <-> A.alt(A.ap(fab, fa), A.ap(gab, fa))`
5. Annihilation: `A.ap(zero, fa) <-> zero`
Added in v2.0.0
---
<h2 class="text-delta">Table of contents</h2>
- [model](#model)
- [Alternative (interface)](#alternative-interface)
- [Alternative1 (interface)](#alternative1-interface)
- [Alternative2 (interface)](#alternative2-interface)
- [Alternative2C (interface)](#alternative2c-interface)
- [Alternative3 (interface)](#alternative3-interface)
- [Alternative3C (interface)](#alternative3c-interface)
- [Alternative4 (interface)](#alternative4-interface)
- [utils](#utils)
- [altAll](#altall)
- [getAlternativeMonoid](#getalternativemonoid)
---
# model
## Alternative (interface)
**Signature**
```ts
export interface Alternative<F> extends Applicative<F>, Alt<F>, Zero<F> {}
```
Added in v2.0.0
## Alternative1 (interface)
**Signature**
```ts
export interface Alternative1<F extends URIS> extends Applicative1<F>, Alt1<F>, Zero1<F> {}
```
Added in v2.0.0
## Alternative2 (interface)
**Signature**
```ts
export interface Alternative2<F extends URIS2> extends Applicative2<F>, Alt2<F>, Zero2<F> {}
```
Added in v2.0.0
## Alternative2C (interface)
**Signature**
```ts
export interface Alternative2C<F extends URIS2, E> extends Applicative2C<F, E>, Alt2C<F, E>, Zero2C<F, E> {}
```
Added in v2.0.0
## Alternative3 (interface)
**Signature**
```ts
export interface Alternative3<F extends URIS3> extends Applicative3<F>, Alt3<F>, Zero3<F> {}
```
Added in v2.0.0
## Alternative3C (interface)
**Signature**
```ts
export interface Alternative3C<F extends URIS3, E> extends Applicative3C<F, E>, Alt3C<F, E>, Zero3C<F, E> {}
```
Added in v2.10.0
## Alternative4 (interface)
**Signature**
```ts
export interface Alternative4<F extends URIS4> extends Applicative4<F>, Alt4<F>, Zero4<F> {}
```
Added in v2.10.0
# utils
## altAll
**Signature**
```ts
export declare function altAll<F extends URIS4>(
F: Alternative4<F>
): <S, R, E, A>(as: ReadonlyArray<Kind4<F, S, R, E, A>>) => Kind4<F, S, R, E, A>
export declare function altAll<F extends URIS3>(
F: Alternative3<F>
): <R, E, A>(as: ReadonlyArray<Kind3<F, R, E, A>>) => Kind3<F, R, E, A>
export declare function altAll<F extends URIS3, E>(
F: Alternative3C<F, E>
): <R, A>(as: ReadonlyArray<Kind3<F, R, E, A>>) => Kind3<F, R, E, A>
export declare function altAll<F extends URIS2>(
F: Alternative2<F>
): <E, A>(as: ReadonlyArray<Kind2<F, E, A>>) => Kind2<F, E, A>
export declare function altAll<F extends URIS2, E>(
F: Alternative2C<F, E>
): <A>(as: ReadonlyArray<Kind2<F, E, A>>) => Kind2<F, E, A>
export declare function altAll<F extends URIS>(F: Alternative1<F>): <A>(as: ReadonlyArray<Kind<F, A>>) => Kind<F, A>
export declare function altAll<F>(F: Alternative<F>): <A>(as: ReadonlyArray<HKT<F, A>>) => HKT<F, A>
```
Added in v2.11.0
## getAlternativeMonoid
Lift a semigroup into a monoid alternative 'F', the inner values are concatenated using the provided `Semigroup`.
**Signature**
```ts
export declare function getAlternativeMonoid<F extends URIS4>(
F: Alternative4<F>
): <A, S, R, E>(S: Semigroup<A>) => Monoid<Kind4<F, S, R, E, A>>
export declare function getAlternativeMonoid<F extends URIS3>(
F: Alternative3<F>
): <A, R, E>(S: Semigroup<A>) => Monoid<Kind3<F, R, E, A>>
export declare function getAlternativeMonoid<F extends URIS3, E>(
F: Alternative3C<F, E>
): <A, R>(S: Semigroup<A>) => Monoid<Kind3<F, R, E, A>>
export declare function getAlternativeMonoid<F extends URIS2>(
F: Alternative2<F>
): <A, E>(S: Semigroup<A>) => Monoid<Kind2<F, E, A>>
export declare function getAlternativeMonoid<F extends URIS2, E>(
F: Alternative2C<F, E>
): <A>(S: Semigroup<A>) => Monoid<Kind2<F, E, A>>
export declare function getAlternativeMonoid<F extends URIS>(
F: Alternative1<F>
): <A>(S: Semigroup<A>) => Monoid<Kind<F, A>>
export declare function getAlternativeMonoid<F>(F: Alternative<F>): <A>(S: Semigroup<A>) => Monoid<HKT<F, A>>
```
Added in v2.13.0
================================================
FILE: docs/modules/Applicative.ts.md
================================================
---
title: Applicative.ts
nav_order: 3
parent: Modules
---
## Applicative overview
The `Applicative` type class extends the `Apply` type class with a `of` function, which can be used to create values
of type `f a` from values of type `a`.
Where `Apply` provides the ability to lift functions of two or more arguments to functions whose arguments are
wrapped using `f`, and `Functor` provides the ability to lift functions of one argument, `pure` can be seen as the
function which lifts functions of _zero_ arguments. That is, `Applicative` functors support a lifting operation for
any number of function arguments.
Instances must satisfy the following laws in addition to the `Apply` laws:
1. Identity: `A.ap(A.of(a => a), fa) <-> fa`
2. Homomorphism: `A.ap(A.of(ab), A.of(a)) <-> A.of(ab(a))`
3. Interchange: `A.ap(fab, A.of(a)) <-> A.ap(A.of(ab => ab(a)), fab)`
Note. `Functor`'s `map` can be derived: `A.map(x, f) = A.ap(A.of(f), x)`
Added in v2.0.0
---
<h2 class="text-delta">Table of contents</h2>
- [model](#model)
- [Applicative (interface)](#applicative-interface)
- [Applicative1 (interface)](#applicative1-interface)
- [Applicative2 (interface)](#applicative2-interface)
- [Applicative2C (interface)](#applicative2c-interface)
- [Applicative3 (interface)](#applicative3-interface)
- [Applicative3C (interface)](#applicative3c-interface)
- [Applicative4 (interface)](#applicative4-interface)
- [utils](#utils)
- [getApplicativeMonoid](#getapplicativemonoid)
- [zone of death](#zone-of-death)
- [~~ApplicativeComposition11~~ (interface)](#applicativecomposition11-interface)
- [~~ApplicativeComposition12C~~ (interface)](#applicativecomposition12c-interface)
- [~~ApplicativeComposition12~~ (interface)](#applicativecomposition12-interface)
- [~~ApplicativeComposition21~~ (interface)](#applicativecomposition21-interface)
- [~~ApplicativeComposition22C~~ (interface)](#applicativecomposition22c-interface)
- [~~ApplicativeComposition22~~ (interface)](#applicativecomposition22-interface)
- [~~ApplicativeComposition2C1~~ (interface)](#applicativecomposition2c1-interface)
- [~~ApplicativeCompositionHKT1~~ (interface)](#applicativecompositionhkt1-interface)
- [~~ApplicativeCompositionHKT2C~~ (interface)](#applicativecompositionhkt2c-interface)
- [~~ApplicativeCompositionHKT2~~ (interface)](#applicativecompositionhkt2-interface)
- [~~ApplicativeComposition~~ (interface)](#applicativecomposition-interface)
- [~~getApplicativeComposition~~](#getapplicativecomposition)
---
# model
## Applicative (interface)
**Signature**
```ts
export interface Applicative<F> extends Apply<F>, Pointed<F> {}
```
Added in v2.0.0
## Applicative1 (interface)
**Signature**
```ts
export interface Applicative1<F extends URIS> extends Apply1<F>, Pointed1<F> {}
```
Added in v2.0.0
## Applicative2 (interface)
**Signature**
```ts
export interface Applicative2<F extends URIS2> extends Apply2<F>, Pointed2<F> {}
```
Added in v2.0.0
## Applicative2C (interface)
**Signature**
```ts
export interface Applicative2C<F extends URIS2, E> extends Apply2C<F, E>, Pointed2C<F, E> {}
```
Added in v2.0.0
## Applicative3 (interface)
**Signature**
```ts
export interface Applicative3<F extends URIS3> extends Apply3<F>, Pointed3<F> {}
```
Added in v2.0.0
## Applicative3C (interface)
**Signature**
```ts
export interface Applicative3C<F extends URIS3, E> extends Apply3C<F, E>, Pointed3C<F, E> {}
```
Added in v2.2.0
## Applicative4 (interface)
**Signature**
```ts
export interface Applicative4<F extends URIS4> extends Apply4<F>, Pointed4<F> {}
```
Added in v2.0.0
# utils
## getApplicativeMonoid
Lift a monoid into 'F', the inner values are concatenated using the provided `Monoid`.
**Signature**
```ts
export declare function getApplicativeMonoid<F extends URIS4>(
F: Applicative4<F>
): <A, S, R, E>(M: Monoid<A>) => Monoid<Kind4<F, S, R, E, A>>
export declare function getApplicativeMonoid<F extends URIS3>(
F: Applicative3<F>
): <A, R, E>(M: Monoid<A>) => Monoid<Kind3<F, R, E, A>>
export declare function getApplicativeMonoid<F extends URIS3, E>(
F: Applicative3C<F, E>
): <A, R>(M: Monoid<A>) => Monoid<Kind3<F, R, E, A>>
export declare function getApplicativeMonoid<F extends URIS2>(
F: Applicative2<F>
): <A, E>(M: Monoid<A>) => Monoid<Kind2<F, E, A>>
export declare function getApplicativeMonoid<F extends URIS2, E>(
F: Applicative2C<F, E>
): <A>(M: Monoid<A>) => Monoid<Kind2<F, E, A>>
export declare function getApplicativeMonoid<F extends URIS>(
F: Applicative1<F>
): <A>(M: Monoid<A>) => Monoid<Kind<F, A>>
export declare function getApplicativeMonoid<F>(F: Applicative<F>): <A>(M: Monoid<A>) => Monoid<HKT<F, A>>
```
Added in v2.10.0
# zone of death
## ~~ApplicativeComposition11~~ (interface)
**Signature**
```ts
export interface ApplicativeComposition11<F extends URIS, G extends URIS> extends FunctorComposition11<F, G> {
readonly of: <A>(a: A) => Kind<F, Kind<G, A>>
readonly ap: <A, B>(fgab: Kind<F, Kind<G, (a: A) => B>>, fga: Kind<F, Kind<G, A>>) => Kind<F, Kind<G, B>>
}
```
Added in v2.0.0
## ~~ApplicativeComposition12C~~ (interface)
**Signature**
```ts
export interface ApplicativeComposition12C<F extends URIS, G extends URIS2, E> extends FunctorComposition12C<F, G, E> {
readonly of: <A>(a: A) => Kind<F, Kind2<G, E, A>>
readonly ap: <A, B>(fgab: Kind<F, Kind2<G, E, (a: A) => B>>, fga: Kind<F, Kind2<G, E, A>>) => Kind<F, Kind2<G, E, B>>
}
```
Added in v2.0.0
## ~~ApplicativeComposition12~~ (interface)
**Signature**
```ts
export interface ApplicativeComposition12<F extends URIS, G extends URIS2> extends FunctorComposition12<F, G> {
readonly of: <E, A>(a: A) => Kind<F, Kind2<G, E, A>>
readonly ap: <E, A, B>(
fgab: Kind<F, Kind2<G, E, (a: A) => B>>,
fga: Kind<F, Kind2<G, E, A>>
) => Kind<F, Kind2<G, E, B>>
}
```
Added in v2.0.0
## ~~ApplicativeComposition21~~ (interface)
**Signature**
```ts
export interface ApplicativeComposition21<F extends URIS2, G extends URIS> extends FunctorComposition21<F, G> {
readonly of: <E, A>(a: A) => Kind2<F, E, Kind<G, A>>
readonly ap: <E, A, B>(
fgab: Kind2<F, E, Kind<G, (a: A) => B>>,
fga: Kind2<F, E, Kind<G, A>>
) => Kind2<F, E, Kind<G, B>>
}
```
Added in v2.0.0
## ~~ApplicativeComposition22C~~ (interface)
**Signature**
```ts
export interface ApplicativeComposition22C<F extends URIS2, G extends URIS2, E> extends FunctorComposition22C<F, G, E> {
readonly of: <FE, A>(a: A) => Kind2<F, FE, Kind2<G, E, A>>
readonly ap: <FE, A, B>(
fgab: Kind2<F, FE, Kind2<G, E, (a: A) => B>>,
fga: Kind2<F, FE, Kind2<G, E, A>>
) => Kind2<F, FE, Kind2<G, E, B>>
}
```
Added in v2.0.0
## ~~ApplicativeComposition22~~ (interface)
**Signature**
```ts
export interface ApplicativeComposition22<F extends URIS2, G extends URIS2> extends FunctorComposition22<F, G> {
readonly of: <FE, GE, A>(a: A) => Kind2<F, FE, Kind2<G, GE, A>>
readonly ap: <FE, GE, A, B>(
fgab: Kind2<F, FE, Kind2<G, GE, (a: A) => B>>,
fga: Kind2<F, FE, Kind2<G, GE, A>>
) => Kind2<F, FE, Kind2<G, GE, B>>
}
```
Added in v2.0.0
## ~~ApplicativeComposition2C1~~ (interface)
**Signature**
```ts
export interface ApplicativeComposition2C1<F extends URIS2, G extends URIS, E> extends FunctorComposition2C1<F, G, E> {
readonly of: <A>(a: A) => Kind2<F, E, Kind<G, A>>
readonly ap: <A, B>(fgab: Kind2<F, E, Kind<G, (a: A) => B>>, fga: Kind2<F, E, Kind<G, A>>) => Kind2<F, E, Kind<G, B>>
}
```
Added in v2.0.0
## ~~ApplicativeCompositionHKT1~~ (interface)
**Signature**
```ts
export interface ApplicativeCompositionHKT1<F, G extends URIS> extends FunctorCompositionHKT1<F, G> {
readonly of: <A>(a: A) => HKT<F, Kind<G, A>>
readonly ap: <A, B>(fgab: HKT<F, Kind<G, (a: A) => B>>, fga: HKT<F, Kind<G, A>>) => HKT<F, Kind<G, B>>
}
```
Added in v2.0.0
## ~~ApplicativeCompositionHKT2C~~ (interface)
**Signature**
```ts
export interface ApplicativeCompositionHKT2C<F, G extends URIS2, E> extends FunctorCompositionHKT2C<F, G, E> {
readonly of: <A>(a: A) => HKT<F, Kind2<G, E, A>>
readonly ap: <A, B>(fgab: HKT<F, Kind2<G, E, (a: A) => B>>, fga: HKT<F, Kind2<G, E, A>>) => HKT<F, Kind2<G, E, B>>
}
```
Added in v2.0.0
## ~~ApplicativeCompositionHKT2~~ (interface)
**Signature**
```ts
export interface ApplicativeCompositionHKT2<F, G extends URIS2> extends FunctorCompositionHKT2<F, G> {
readonly of: <E, A>(a: A) => HKT<F, Kind2<G, E, A>>
readonly ap: <E, A, B>(fgab: HKT<F, Kind2<G, E, (a: A) => B>>, fga: HKT<F, Kind2<G, E, A>>) => HKT<F, Kind2<G, E, B>>
}
```
Added in v2.0.0
## ~~ApplicativeComposition~~ (interface)
**Signature**
```ts
export interface ApplicativeComposition<F, G> extends FunctorComposition<F, G> {
readonly of: <A>(a: A) => HKT<F, HKT<G, A>>
readonly ap: <A, B>(fgab: HKT<F, HKT<G, (a: A) => B>>, fga: HKT<F, HKT<G, A>>) => HKT<F, HKT<G, B>>
}
```
Added in v2.0.0
## ~~getApplicativeComposition~~
Use [`ap`](./Apply.ts.html#ap) instead.
**Signature**
```ts
export declare function getApplicativeComposition<F extends URIS2, G extends URIS2, E>(
F: Applicative2<F>,
G: Applicative2C<G, E>
): ApplicativeComposition22C<F, G, E>
export declare function getApplicativeComposition<F extends URIS2, G extends URIS2>(
F: Applicative2<F>,
G: Applicative2<G>
): ApplicativeComposition22<F, G>
export declare function getApplicativeComposition<F extends URIS2, G extends URIS2, E>(
F: Applicative2<F>,
G: Applicative2C<G, E>
): ApplicativeComposition22C<F, G, E>
export declare function getApplicativeComposition<F extends URIS2, G extends URIS>(
F: Applicative2<F>,
G: Applicative1<G>
): ApplicativeComposition21<F, G>
export declare function getApplicativeComposition<F extends URIS, G extends URIS2>(
F: Applicative1<F>,
G: Applicative2<G>
): ApplicativeComposition12<F, G>
export declare function getApplicativeComposition<F extends URIS, G extends URIS2, E>(
F: Applicative1<F>,
G: Applicative2C<G, E>
): ApplicativeComposition12C<F, G, E>
export declare function getApplicativeComposition<F extends URIS, G extends URIS>(
F: Applicative1<F>,
G: Applicative1<G>
): ApplicativeComposition11<F, G>
export declare function getApplicativeComposition<F, G extends URIS2>(
F: Applicative<F>,
G: Applicative2<G>
): ApplicativeCompositionHKT2<F, G>
export declare function getApplicativeComposition<F, G extends URIS2, E>(
F: Applicative<F>,
G: Applicative2C<G, E>
): ApplicativeCompositionHKT2C<F, G, E>
export declare function getApplicativeComposition<F, G extends URIS>(
F: Applicative<F>,
G: Applicative1<G>
): ApplicativeCompositionHKT1<F, G>
export declare function getApplicativeComposition<F, G>(
F: Applicative<F>,
G: Applicative<G>
): ApplicativeComposition<F, G>
```
Added in v2.0.0
================================================
FILE: docs/modules/Apply.ts.md
================================================
---
title: Apply.ts
nav_order: 4
parent: Modules
---
## Apply overview
The `Apply` class provides the `ap` which is used to apply a function to an argument under a type constructor.
`Apply` can be used to lift functions of two or more arguments to work on values wrapped with the type constructor
`f`.
Instances must satisfy the following law in addition to the `Functor` laws:
1. Associative composition: `F.ap(F.ap(F.map(fbc, bc => ab => a => bc(ab(a))), fab), fa) <-> F.ap(fbc, F.ap(fab, fa))`
Formally, `Apply` represents a strong lax semi-monoidal endofunctor.
**Example**
```ts
import * as O from 'fp-ts/Option'
import { pipe } from 'fp-ts/function'
const f = (a: string) => (b: number) => (c: boolean) => a + String(b) + String(c)
const fa: O.Option<string> = O.some('s')
const fb: O.Option<number> = O.some(1)
const fc: O.Option<boolean> = O.some(true)
assert.deepStrictEqual(
pipe(
// lift a function
O.some(f),
// apply the first argument
O.ap(fa),
// apply the second argument
O.ap(fb),
// apply the third argument
O.ap(fc)
),
O.some('s1true')
)
```
Added in v2.0.0
---
<h2 class="text-delta">Table of contents</h2>
- [model](#model)
- [Apply (interface)](#apply-interface)
- [Apply1 (interface)](#apply1-interface)
- [Apply2 (interface)](#apply2-interface)
- [Apply2C (interface)](#apply2c-interface)
- [Apply3 (interface)](#apply3-interface)
- [Apply3C (interface)](#apply3c-interface)
- [Apply4 (interface)](#apply4-interface)
- [utils](#utils)
- [ap](#ap)
- [apFirst](#apfirst)
- [apS](#aps)
- [apSecond](#apsecond)
- [getApplySemigroup](#getapplysemigroup)
- [sequenceS](#sequences)
- [sequenceT](#sequencet)
---
# model
## Apply (interface)
**Signature**
```ts
export interface Apply<F> extends Functor<F> {
readonly ap: <A, B>(fab: HKT<F, (a: A) => B>, fa: HKT<F, A>) => HKT<F, B>
}
```
Added in v2.0.0
## Apply1 (interface)
**Signature**
```ts
export interface Apply1<F extends URIS> extends Functor1<F> {
readonly ap: <A, B>(fab: Kind<F, (a: A) => B>, fa: Kind<F, A>) => Kind<F, B>
}
```
Added in v2.0.0
## Apply2 (interface)
**Signature**
```ts
export interface Apply2<F extends URIS2> extends Functor2<F> {
readonly ap: <E, A, B>(fab: Kind2<F, E, (a: A) => B>, fa: Kind2<F, E, A>) => Kind2<F, E, B>
}
```
Added in v2.0.0
## Apply2C (interface)
**Signature**
```ts
export interface Apply2C<F extends URIS2, E> extends Functor2C<F, E> {
readonly ap: <A, B>(fab: Kind2<F, E, (a: A) => B>, fa: Kind2<F, E, A>) => Kind2<F, E, B>
}
```
Added in v2.0.0
## Apply3 (interface)
**Signature**
```ts
export interface Apply3<F extends URIS3> extends Functor3<F> {
readonly ap: <R, E, A, B>(fab: Kind3<F, R, E, (a: A) => B>, fa: Kind3<F, R, E, A>) => Kind3<F, R, E, B>
}
```
Added in v2.0.0
## Apply3C (interface)
**Signature**
```ts
export interface Apply3C<F extends URIS3, E> extends Functor3C<F, E> {
readonly ap: <R, A, B>(fab: Kind3<F, R, E, (a: A) => B>, fa: Kind3<F, R, E, A>) => Kind3<F, R, E, B>
}
```
Added in v2.2.0
## Apply4 (interface)
**Signature**
```ts
export interface Apply4<F extends URIS4> extends Functor4<F> {
readonly ap: <S, R, E, A, B>(fab: Kind4<F, S, R, E, (a: A) => B>, fa: Kind4<F, S, R, E, A>) => Kind4<F, S, R, E, B>
}
```
Added in v2.0.0
# utils
## ap
`ap` composition.
**Signature**
```ts
export declare function ap<F extends URIS4, G extends URIS4>(
F: Apply4<F>,
G: Apply4<G>
): <FS, FR, FE, GS, GR, GE, A>(
fa: Kind4<F, FS, FR, FE, Kind4<G, GS, GR, GE, A>>
) => <B>(fab: Kind4<F, FS, FR, FE, Kind4<G, GS, GR, GE, (a: A) => B>>) => Kind4<F, FS, FR, FE, Kind4<G, GS, GR, GE, B>>
export declare function ap<F extends URIS4, G extends URIS3>(
F: Apply4<F>,
G: Apply3<G>
): <S, FR, FE, GR, GE, A>(
fa: Kind4<F, S, FR, FE, Kind3<G, GR, GE, A>>
) => <B>(fab: Kind4<F, S, FR, FE, Kind3<G, GR, GE, (a: A) => B>>) => Kind4<F, S, FR, FE, Kind3<G, GR, GE, B>>
export declare function ap<F extends URIS4, G extends URIS3, GE>(
F: Apply4<F>,
G: Apply3C<G, GE>
): <S, FR, FE, GR, A>(
fa: Kind4<F, S, FR, FE, Kind3<G, GR, GE, A>>
) => <B>(fab: Kind4<F, S, FR, FE, Kind3<G, GR, GE, (a: A) => B>>) => Kind4<F, S, FR, FE, Kind3<G, GR, GE, B>>
export declare function ap<F extends URIS4, G extends URIS2>(
F: Apply4<F>,
G: Apply2<G>
): <S, R, FE, GE, A>(
fa: Kind4<F, S, R, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind4<F, S, R, FE, Kind2<G, GE, (a: A) => B>>) => Kind4<F, S, R, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS4, G extends URIS2, GE>(
F: Apply4<F>,
G: Apply2C<G, GE>
): <S, R, FE, A>(
fa: Kind4<F, S, R, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind4<F, S, R, FE, Kind2<G, GE, (a: A) => B>>) => Kind4<F, S, R, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS4, G extends URIS>(
F: Apply4<F>,
G: Apply1<G>
): <S, R, E, A>(
fa: Kind4<F, S, R, E, Kind<G, A>>
) => <B>(fab: Kind4<F, S, R, E, Kind<G, (a: A) => B>>) => Kind4<F, S, R, E, Kind<G, B>>
export declare function ap<F extends URIS3, FE, G extends URIS4>(
F: Apply3C<F, FE>,
G: Apply4<G>
): <FR, S, GR, GE, A>(
fa: Kind3<F, FR, FE, Kind4<G, S, GR, GE, A>>
) => <B>(fab: Kind3<F, FR, FE, Kind4<G, S, GR, GE, (a: A) => B>>) => Kind3<F, FR, FE, Kind4<G, S, GR, GE, B>>
export declare function ap<F extends URIS3, FE, G extends URIS3>(
F: Apply3C<F, FE>,
G: Apply3<G>
): <FR, GR, GE, A>(
fa: Kind3<F, FR, FE, Kind3<G, GR, GE, A>>
) => <B>(fab: Kind3<F, FR, FE, Kind3<G, GR, GE, (a: A) => B>>) => Kind3<F, FR, FE, Kind3<G, GR, GE, B>>
export declare function ap<F extends URIS3, FE, G extends URIS3, GE>(
F: Apply3C<F, FE>,
G: Apply3C<G, GE>
): <FR, GR, A>(
fa: Kind3<F, FR, FE, Kind3<G, GR, GE, A>>
) => <B>(fab: Kind3<F, FR, FE, Kind3<G, GR, GE, (a: A) => B>>) => Kind3<F, FR, FE, Kind3<G, GR, GE, B>>
export declare function ap<F extends URIS3, FE, G extends URIS2>(
F: Apply3C<F, FE>,
G: Apply2<G>
): <R, GE, A>(
fa: Kind3<F, R, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind3<F, R, FE, Kind2<G, GE, (a: A) => B>>) => Kind3<F, R, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS3, FE, G extends URIS2, GE>(
F: Apply3C<F, FE>,
G: Apply2C<G, GE>
): <R, A>(
fa: Kind3<F, R, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind3<F, R, FE, Kind2<G, GE, (a: A) => B>>) => Kind3<F, R, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS3, E, G extends URIS>(
F: Apply3C<F, E>,
G: Apply1<G>
): <R, A>(
fa: Kind3<F, R, E, Kind<G, A>>
) => <B>(fab: Kind3<F, R, E, Kind<G, (a: A) => B>>) => Kind3<F, R, E, Kind<G, B>>
export declare function ap<F extends URIS3, G extends URIS4>(
F: Apply3<F>,
G: Apply4<G>
): <FR, FE, S, GR, GE, A>(
fa: Kind3<F, FR, FE, Kind4<G, S, GR, GE, A>>
) => <B>(fab: Kind3<F, FR, FE, Kind4<G, S, GR, GE, (a: A) => B>>) => Kind3<F, FR, FE, Kind4<G, S, GR, GE, B>>
export declare function ap<F extends URIS3, G extends URIS3>(
F: Apply3<F>,
G: Apply3<G>
): <FR, FE, GR, GE, A>(
fa: Kind3<F, FR, FE, Kind3<G, GR, GE, A>>
) => <B>(fab: Kind3<F, FR, FE, Kind3<G, GR, GE, (a: A) => B>>) => Kind3<F, FR, FE, Kind3<G, GR, GE, B>>
export declare function ap<F extends URIS3, G extends URIS3, GE>(
F: Apply3<F>,
G: Apply3C<G, GE>
): <FR, FE, GR, A>(
fa: Kind3<F, FR, FE, Kind3<G, GR, GE, A>>
) => <B>(fab: Kind3<F, FR, FE, Kind3<G, GR, GE, (a: A) => B>>) => Kind3<F, FR, FE, Kind3<G, GR, GE, B>>
export declare function ap<F extends URIS3, G extends URIS2>(
F: Apply3<F>,
G: Apply2<G>
): <R, FE, GE, A>(
fa: Kind3<F, R, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind3<F, R, FE, Kind2<G, GE, (a: A) => B>>) => Kind3<F, R, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS3, G extends URIS2, GE>(
F: Apply3<F>,
G: Apply2C<G, GE>
): <R, FE, A>(
fa: Kind3<F, R, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind3<F, R, FE, Kind2<G, GE, (a: A) => B>>) => Kind3<F, R, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS3, G extends URIS>(
F: Apply3<F>,
G: Apply1<G>
): <R, E, A>(
fa: Kind3<F, R, E, Kind<G, A>>
) => <B>(fab: Kind3<F, R, E, Kind<G, (a: A) => B>>) => Kind3<F, R, E, Kind<G, B>>
export declare function ap<F extends URIS2, FE, G extends URIS4>(
F: Apply2C<F, FE>,
G: Apply4<G>
): <S, R, GE, A>(
fa: Kind2<F, FE, Kind4<G, S, R, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind4<G, S, R, GE, (a: A) => B>>) => Kind2<F, FE, Kind4<G, S, R, GE, B>>
export declare function ap<F extends URIS2, FE, G extends URIS3>(
F: Apply2C<F, FE>,
G: Apply3<G>
): <R, GE, A>(
fa: Kind2<F, FE, Kind3<G, R, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind3<G, R, GE, (a: A) => B>>) => Kind2<F, FE, Kind3<G, R, GE, B>>
export declare function ap<F extends URIS2, FE, G extends URIS3, GE>(
F: Apply2C<F, FE>,
G: Apply3C<G, GE>
): <R, A>(
fa: Kind2<F, FE, Kind3<G, R, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind3<G, R, GE, (a: A) => B>>) => Kind2<F, FE, Kind3<G, R, GE, B>>
export declare function ap<F extends URIS2, FE, G extends URIS2>(
F: Apply2C<F, FE>,
G: Apply2<G>
): <GE, A>(
fa: Kind2<F, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind2<G, GE, (a: A) => B>>) => Kind2<F, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS2, FE, G extends URIS2, GE>(
F: Apply2C<F, FE>,
G: Apply2C<G, GE>
): <A>(
fa: Kind2<F, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind2<G, GE, (a: A) => B>>) => Kind2<F, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS2, E, G extends URIS>(
F: Apply2C<F, E>,
G: Apply1<G>
): <A>(fa: Kind2<F, E, Kind<G, A>>) => <B>(fab: Kind2<F, E, Kind<G, (a: A) => B>>) => Kind2<F, E, Kind<G, B>>
export declare function ap<F extends URIS2, G extends URIS4>(
F: Apply2<F>,
G: Apply4<G>
): <FE, S, R, GE, A>(
fa: Kind2<F, FE, Kind4<G, S, R, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind4<G, S, R, GE, (a: A) => B>>) => Kind2<F, FE, Kind4<G, S, R, GE, B>>
export declare function ap<F extends URIS2, G extends URIS3>(
F: Apply2<F>,
G: Apply3<G>
): <FE, R, GE, A>(
fa: Kind2<F, FE, Kind3<G, R, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind3<G, R, GE, (a: A) => B>>) => Kind2<F, FE, Kind3<G, R, GE, B>>
export declare function ap<F extends URIS2, G extends URIS3, GE>(
F: Apply2<F>,
G: Apply3C<G, GE>
): <FE, R, A>(
fa: Kind2<F, FE, Kind3<G, R, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind3<G, R, GE, (a: A) => B>>) => Kind2<F, FE, Kind3<G, R, GE, B>>
export declare function ap<F extends URIS2, G extends URIS2>(
F: Apply2<F>,
G: Apply2<G>
): <FE, GE, A>(
fa: Kind2<F, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind2<G, GE, (a: A) => B>>) => Kind2<F, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS2, G extends URIS2, GE>(
F: Apply2<F>,
G: Apply2C<G, GE>
): <FE, A>(
fa: Kind2<F, FE, Kind2<G, GE, A>>
) => <B>(fab: Kind2<F, FE, Kind2<G, GE, (a: A) => B>>) => Kind2<F, FE, Kind2<G, GE, B>>
export declare function ap<F extends URIS2, G extends URIS>(
F: Apply2<F>,
G: Apply1<G>
): <E, A>(fa: Kind2<F, E, Kind<G, A>>) => <B>(fab: Kind2<F, E, Kind<G, (a: A) => B>>) => Kind2<F, E, Kind<G, B>>
export declare function ap<F extends URIS, G extends URIS4>(
F: Apply1<F>,
G: Apply4<G>
): <S, R, E, A>(
fa: Kind<F, Kind4<G, S, R, E, A>>
) => <B>(fab: Kind<F, Kind4<G, S, R, E, (a: A) => B>>) => Kind<F, Kind4<G, S, R, E, B>>
export declare function ap<F extends URIS, G extends URIS3>(
F: Apply1<F>,
G: Apply3<G>
): <R, E, A>(
fa: Kind<F, Kind3<G, R, E, A>>
) => <B>(fab: Kind<F, Kind3<G, R, E, (a: A) => B>>) => Kind<F, Kind3<G, R, E, B>>
export declare function ap<F extends URIS, G extends URIS3, E>(
F: Apply1<F>,
G: Apply3C<G, E>
): <R, A>(
fa: Kind<F, Kind3<G, R, E, A>>
) => <B>(fab: Kind<F, Kind3<G, R, E, (a: A) => B>>) => Kind<F, Kind3<G, R, E, B>>
export declare function ap<F extends URIS, G extends URIS2>(
F: Apply1<F>,
G: Apply2<G>
): <E, A>(fa: Kind<F, Kind2<G, E, A>>) => <B>(fab: Kind<F, Kind2<G, E, (a: A) => B>>) => Kind<F, Kind2<G, E, B>>
export declare function ap<F extends URIS, G extends URIS2, E>(
F: Apply1<F>,
G: Apply2C<G, E>
): <A>(fa: Kind<F, Kind2<G, E, A>>) => <B>(fab: Kind<F, Kind2<G, E, (a: A) => B>>) => Kind<F, Kind2<G, E, B>>
export declare function ap<F extends URIS, G extends URIS>(
F: Apply1<F>,
G: Apply1<G>
): <A>(fa: Kind<F, Kind<G, A>>) => <B>(fab: Kind<F, Kind<G, (a: A) => B>>) => Kind<F, Kind<G, B>>
export declare function ap<F, G extends URIS4>(
F: Apply<F>,
G: Apply4<G>
): <S, R, E, A>(
fa: HKT<F, Kind4<G, S, R, E, A>>
) => <B>(fab: HKT<F, Kind4<G, S, R, E, (a: A) => B>>) => HKT<F, Kind4<G, S, R, E, B>>
export declare function ap<F, G extends URIS3>(
F: Apply<F>,
G: Apply3<G>
): <R, E, A>(
fa: HKT<F, Kind3<G, R, E, A>>
) => <B>(fab: HKT<F, Kind3<G, R, E, (a: A) => B>>) => HKT<F, Kind3<G, R, E, B>>
export declare function ap<F, G extends URIS3, E>(
F: Apply<F>,
G: Apply3C<G, E>
): <R, A>(fa: HKT<F, Kind3<G, R, E, A>>) => <B>(fab: HKT<F, Kind3<G, R, E, (a: A) => B>>) => HKT<F, Kind3<G, R, E, B>>
export declare function ap<F, G extends URIS2>(
F: Apply<F>,
G: Apply2<G>
): <E, A>(fa: HKT<F, Kind2<G, E, A>>) => <B>(fab: HKT<F, Kind2<G, E, (a: A) => B>>) => HKT<F, Kind2<G, E, B>>
export declare function ap<F, G extends URIS2, E>(
F: Apply<F>,
G: Apply2C<G, E>
): <A>(fa: HKT<F, Kind2<G, E, A>>) => <B>(fab: HKT<F, Kind2<G, E, (a: A) => B>>) => HKT<F, Kind2<G, E, B>>
export declare function ap<F, G extends URIS>(
F: Apply<F>,
G: Apply1<G>
): <A>(fa: HKT<F, Kind<G, A>>) => <B>(fab: HKT<F, Kind<G, (a: A) => B>>) => HKT<F, Kind<G, B>>
export declare function ap<F, G>(
F: Apply<F>,
G: Apply<G>
): <A>(fa: HKT<F, HKT<G, A>>) => <B>(fab: HKT<F, HKT<G, (a: A) => B>>) => HKT<F, HKT<G, B>>
```
Added in v2.10.0
## apFirst
**Signature**
```ts
export declare function apFirst<F extends URIS4>(
A: Apply4<F>
): <S, R, E, B>(second: Kind4<F, S, R, E, B>) => <A>(first: Kind4<F, S, R, E, A>) => Kind4<F, S, R, E, A>
export declare function apFirst<F extends URIS3>(
A: Apply3<F>
): <R, E, B>(second: Kind3<F, R, E, B>) => <A>(first: Kind3<F, R, E, A>) => Kind3<F, R, E, A>
export declare function apFirst<F extends URIS3, E>(
A: Apply3C<F, E>
): <R, B>(second: Kind3<F, R, E, B>) => <A>(first: Kind3<F, R, E, A>) => Kind3<F, R, E, A>
export declare function apFirst<F extends URIS2>(
A: Apply2<F>
): <E, B>(second: Kind2<F, E, B>) => <A>(first: Kind2<F, E, A>) => Kind2<F, E, A>
export declare function apFirst<F extends URIS2, E>(
A: Apply2C<F, E>
): <B>(second: Kind2<F, E, B>) => <A>(first: Kind2<F, E, A>) => Kind2<F, E, A>
export declare function apFirst<F extends URIS>(
A: Apply1<F>
): <B>(second: Kind<F, B>) => <A>(first: Kind<F, A>) => Kind<F, A>
export declare function apFirst<F>(A: Apply<F>): <B>(second: HKT<F, B>) => <A>(first: HKT<F, A>) => HKT<F, A>
```
Added in v2.10.0
## apS
**Signature**
```ts
export declare function apS<F extends URIS4>(
F: Apply4<F>
): <N extends string, A, S, R, E, B>(
name: Exclude<N, keyof A>,
fb: Kind4<F, S, R, E, B>
) => (fa: Kind4<F, S, R, E, A>) => Kind4<F, S, R, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B }>
export declare function apS<F extends URIS3>(
F: Apply3<F>
): <N extends string, A, R, E, B>(
name: Exclude<N, keyof A>,
fb: Kind3<F, R, E, B>
) => (fa: Kind3<F, R, E, A>) => Kind3<F, R, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B }>
export declare function apS<F extends URIS3, E>(
F: Apply3C<F, E>
): <N extends string, A, R, B>(
name: Exclude<N, keyof A>,
fb: Kind3<F, R, E, B>
) => (fa: Kind3<F, R, E, A>) => Kind3<F, R, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B }>
export declare function apS<F extends URIS2>(
F: Apply2<F>
): <N extends string, A, E, B>(
name: Exclude<N, keyof A>,
fb: Kind2<F, E, B>
) => (fa: Kind2<F, E, A>) => Kind2<F, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B }>
export declare function apS<F extends URIS2, E>(
F: Apply2C<F, E>
): <N extends string, A, B>(
name: Exclude<N, keyof A>,
fb: Kind2<F, E, B>
) => (fa: Kind2<F, E, A>) => Kind2<F, E, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B }>
export declare function apS<F extends URIS>(
F: Apply1<F>
): <N extends string, A, B>(
name: Exclude<N, keyof A>,
fb: Kind<F, B>
) => (fa: Kind<F, A>) => Kind<F, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B }>
export declare function apS<F>(
F: Apply<F>
): <N extends string, A, B>(
name: Exclude<N, keyof A>,
fb: HKT<F, B>
) => (fa: HKT<F, A>) => HKT<F, { readonly [K in keyof A | N]: K extends keyof A ? A[K] : B }>
```
Added in v2.10.0
## apSecond
**Signature**
```ts
export declare function apSecond<F extends URIS4>(
A: Apply4<F>
): <S, R, E, B>(second: Kind4<F, S, R, E, B>) => <A>(first: Kind4<F, S, R, E, A>) => Kind4<F, S, R, E, B>
export declare function apSecond<F extends URIS3>(
A: Apply3<F>
): <R, E, B>(second: Kind3<F, R, E, B>) => <A>(first: Kind3<F, R, E, A>) => Kind3<F, R, E, B>
export declare function apSecond<F extends URIS3, E>(
A: Apply3C<F, E>
): <R, B>(second: Kind3<F, R, E, B>) => <A>(first: Kind3<F, R, E, A>) => Kind3<F, R, E, B>
export declare function apSecond<F extends URIS2>(
A: Apply2<F>
): <E, B>(second: Kind2<F, E, B>) => <A>(first: Kind2<F, E, A>) => Kind2<F, E, B>
export declare function apSecond<F extends URIS2, E>(
A: Apply2C<F, E>
): <B>(second: Kind2<F, E, B>) => <A>(first: Kind2<F, E, A>) => Kind2<F, E, B>
export declare function apSecond<F extends URIS>(
A: Apply1<F>
): <B>(second: Kind<F, B>) => <A>(first: Kind<F, A>) => Kind<F, B>
export declare function apSecond<F>(A: Apply<F>): <B>(second: HKT<F, B>) => <A>(first: HKT<F, A>) => HKT<F, B>
```
Added in v2.10.0
## getApplySemigroup
Lift a semigroup into 'F', the inner values are concatenated using the provided `Semigroup`.
**Signature**
```ts
export declare function getApplySemigroup<F extends URIS4>(
F: Apply4<F>
): <A, S, R, E>(S: Semigroup<A>) => Semigroup<Kind4<F, S, R, E, A>>
export declare function getApplySemigroup<F extends URIS3>(
F: Apply3<F>
): <A, R, E>(S: Semigroup<A>) => Semigroup<Kind3<F, R, E, A>>
export declare function getApplySemigroup<F extends URIS3, E>(
F: Apply3C<F, E>
): <A, R>(S: Semigroup<A>) => Semigroup<Kind3<F, R, E, A>>
export declare function getApplySemigroup<F extends URIS2>(
F: Apply2<F>
): <A, E>(S: Semigroup<A>) => Semigroup<Kind2<F, E, A>>
export declare function getApplySemigroup<F extends URIS2, E>(
F: Apply2C<F, E>
): <A>(S: Semigroup<A>) => Semigroup<Kind2<F, E, A>>
export declare function getApplySemigroup<F extends URIS>(F: Apply1<F>): <A>(S: Semigroup<A>) => Semigroup<Kind<F, A>>
export declare function getApplySemigroup<F>(F: Apply<F>): <A>(S: Semigroup<A>) => Semigroup<HKT<F, A>>
```
Added in v2.10.0
## sequenceS
Like `Apply.sequenceT` but works with structs instead of tuples.
**Signature**
```ts
export declare function sequenceS<F extends URIS4>(
F: Apply4<F>
): <S, R, E, NER extends Record<string, Kind4<F, S, R, E, any>>>(
r: EnforceNonEmptyRecord<NER> &
gitextract_97f0v62q/ ├── .editorconfig ├── .eslintrc.json ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── Bug_report.md │ │ ├── Documentation.md │ │ └── Feature_request.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ └── main.yml ├── .gitignore ├── .prettierrc ├── .vscode/ │ └── settings.json ├── CHANGELOG.md ├── Do.md ├── LICENSE ├── README.md ├── code2comment.html ├── docs/ │ ├── _config.yml │ ├── _sass/ │ │ └── custom/ │ │ └── custom.scss │ ├── ecosystem.md │ ├── guides/ │ │ ├── HKT.md │ │ ├── code-conventions.md │ │ ├── do-notation.md │ │ ├── index.md │ │ ├── purescript.md │ │ └── upgrade-to-v2.md │ ├── index.md │ ├── learning-resources.md │ └── modules/ │ ├── Alt.ts.md │ ├── Alternative.ts.md │ ├── Applicative.ts.md │ ├── Apply.ts.md │ ├── Array.ts.md │ ├── Bifunctor.ts.md │ ├── BooleanAlgebra.ts.md │ ├── Bounded.ts.md │ ├── BoundedDistributiveLattice.ts.md │ ├── BoundedJoinSemilattice.ts.md │ ├── BoundedLattice.ts.md │ ├── BoundedMeetSemilattice.ts.md │ ├── Category.ts.md │ ├── Chain.ts.md │ ├── ChainRec.ts.md │ ├── Choice.ts.md │ ├── Comonad.ts.md │ ├── Compactable.ts.md │ ├── Console.ts.md │ ├── Const.ts.md │ ├── Contravariant.ts.md │ ├── Date.ts.md │ ├── DistributiveLattice.ts.md │ ├── Either.ts.md │ ├── EitherT.ts.md │ ├── Endomorphism.ts.md │ ├── Eq.ts.md │ ├── Extend.ts.md │ ├── Field.ts.md │ ├── Filterable.ts.md │ ├── FilterableWithIndex.ts.md │ ├── Foldable.ts.md │ ├── FoldableWithIndex.ts.md │ ├── FromEither.ts.md │ ├── FromIO.ts.md │ ├── FromReader.ts.md │ ├── FromState.ts.md │ ├── FromTask.ts.md │ ├── FromThese.ts.md │ ├── Functor.ts.md │ ├── FunctorWithIndex.ts.md │ ├── Group.ts.md │ ├── HKT.ts.md │ ├── HeytingAlgebra.ts.md │ ├── IO.ts.md │ ├── IOEither.ts.md │ ├── IOOption.ts.md │ ├── IORef.ts.md │ ├── Identity.ts.md │ ├── Invariant.ts.md │ ├── JoinSemilattice.ts.md │ ├── Json.ts.md │ ├── Lattice.ts.md │ ├── Magma.ts.md │ ├── Map.ts.md │ ├── MeetSemilattice.ts.md │ ├── Monad.ts.md │ ├── MonadIO.ts.md │ ├── MonadTask.ts.md │ ├── MonadThrow.ts.md │ ├── Monoid.ts.md │ ├── NaturalTransformation.ts.md │ ├── NonEmptyArray.ts.md │ ├── Option.ts.md │ ├── OptionT.ts.md │ ├── Ord.ts.md │ ├── Ordering.ts.md │ ├── Pointed.ts.md │ ├── Predicate.ts.md │ ├── Profunctor.ts.md │ ├── Random.ts.md │ ├── Reader.ts.md │ ├── ReaderEither.ts.md │ ├── ReaderIO.ts.md │ ├── ReaderT.ts.md │ ├── ReaderTask.ts.md │ ├── ReaderTaskEither.ts.md │ ├── ReadonlyArray.ts.md │ ├── ReadonlyMap.ts.md │ ├── ReadonlyNonEmptyArray.ts.md │ ├── ReadonlyRecord.ts.md │ ├── ReadonlySet.ts.md │ ├── ReadonlyTuple.ts.md │ ├── Record.ts.md │ ├── Refinement.ts.md │ ├── Ring.ts.md │ ├── Semigroup.ts.md │ ├── Semigroupoid.ts.md │ ├── Semiring.ts.md │ ├── Separated.ts.md │ ├── Set.ts.md │ ├── Show.ts.md │ ├── State.ts.md │ ├── StateReaderTaskEither.ts.md │ ├── StateT.ts.md │ ├── Store.ts.md │ ├── Strong.ts.md │ ├── Task.ts.md │ ├── TaskEither.ts.md │ ├── TaskOption.ts.md │ ├── TaskThese.ts.md │ ├── These.ts.md │ ├── TheseT.ts.md │ ├── Traced.ts.md │ ├── Traversable.ts.md │ ├── TraversableWithIndex.ts.md │ ├── Tree.ts.md │ ├── Tuple.ts.md │ ├── Unfoldable.ts.md │ ├── ValidationT.ts.md │ ├── Witherable.ts.md │ ├── Writer.ts.md │ ├── WriterT.ts.md │ ├── Zero.ts.md │ ├── boolean.ts.md │ ├── function.ts.md │ ├── index.md │ ├── index.ts.md │ ├── number.ts.md │ ├── pipeable.ts.md │ ├── string.ts.md │ ├── struct.ts.md │ └── void.ts.md ├── docs-ts.json ├── dtslint/ │ ├── Applicative.ts │ ├── Apply.ts │ ├── Array.ts │ ├── Console.ts │ ├── Const.ts │ ├── Either.ts │ ├── Eq.ts │ ├── Functor.ts │ ├── IO.ts │ ├── IOEither.ts │ ├── Identity.ts │ ├── Json.ts │ ├── Map.ts │ ├── Monoid.ts │ ├── NonEmptyArray.ts │ ├── Option.ts │ ├── Ord.ts │ ├── Reader.ts │ ├── ReaderEither.ts │ ├── ReaderT.ts │ ├── ReaderTask.ts │ ├── ReaderTaskEither.ts │ ├── ReadonlyArray.ts │ ├── ReadonlyMap.ts │ ├── ReadonlyNonEmptyArray.ts │ ├── ReadonlyRecord.ts │ ├── ReadonlySet.ts │ ├── Record.ts │ ├── Ring.ts │ ├── Semigroup.ts │ ├── Set.ts │ ├── Show.ts │ ├── StateReaderTaskEither.ts │ ├── Task.ts │ ├── TaskEither.ts │ ├── TaskOption.ts │ ├── Traversable.ts │ ├── Tree.ts │ ├── constrained.ts │ ├── function.ts │ ├── index.d.ts │ ├── index.ts │ ├── pipeable.ts │ └── tsconfig.json ├── examples/ │ ├── fp-ts-to-the-max-I.ts │ ├── fp-ts-to-the-max-II.ts │ └── tsconfig.json ├── package.json ├── perf/ │ ├── Either/ │ │ └── sequenceArray.ts │ ├── IO/ │ │ └── sequenceArray.ts │ ├── Option/ │ │ └── sequenceArray.ts │ ├── ReaderTask/ │ │ └── traverseReadonlyArrayWithIndexSeq.ts │ ├── ReaderTaskEither/ │ │ └── traverseReadonlyArrayWithIndexSeq.ts │ ├── ReadonlyNonEmptyArray.ts/ │ │ └── reverse.ts │ ├── StateReaderTaskEither/ │ │ └── sequenceArray.ts │ ├── Task/ │ │ ├── sequenceArray.ts │ │ ├── stack.ts │ │ └── traverseReadonlyArrayWithIndexSeq.ts │ ├── TaskEither/ │ │ └── traverseReadonlyArrayWithIndexSeq.ts │ ├── TaskOption/ │ │ └── traverseReadonlyArrayWithIndexSeq.ts │ ├── TaskOption.ts/ │ │ └── traverseReadonlyArrayWithIndexSeq.ts │ └── function/ │ ├── flow.ts │ └── pipe.ts ├── scripts/ │ ├── FileSystem.ts │ ├── build.ts │ ├── linter.ts │ ├── pre-publish.ts │ ├── release.ts │ └── run.ts ├── src/ │ ├── Alt.ts │ ├── Alternative.ts │ ├── Applicative.ts │ ├── Apply.ts │ ├── Array.ts │ ├── Bifunctor.ts │ ├── BooleanAlgebra.ts │ ├── Bounded.ts │ ├── BoundedDistributiveLattice.ts │ ├── BoundedJoinSemilattice.ts │ ├── BoundedLattice.ts │ ├── BoundedMeetSemilattice.ts │ ├── Category.ts │ ├── Chain.ts │ ├── ChainRec.ts │ ├── Choice.ts │ ├── Comonad.ts │ ├── Compactable.ts │ ├── Console.ts │ ├── Const.ts │ ├── Contravariant.ts │ ├── Date.ts │ ├── DistributiveLattice.ts │ ├── Either.ts │ ├── EitherT.ts │ ├── Endomorphism.ts │ ├── Eq.ts │ ├── Extend.ts │ ├── Field.ts │ ├── Filterable.ts │ ├── FilterableWithIndex.ts │ ├── Foldable.ts │ ├── FoldableWithIndex.ts │ ├── FromEither.ts │ ├── FromIO.ts │ ├── FromReader.ts │ ├── FromState.ts │ ├── FromTask.ts │ ├── FromThese.ts │ ├── Functor.ts │ ├── FunctorWithIndex.ts │ ├── Group.ts │ ├── HKT.ts │ ├── HeytingAlgebra.ts │ ├── IO.ts │ ├── IOEither.ts │ ├── IOOption.ts │ ├── IORef.ts │ ├── Identity.ts │ ├── Invariant.ts │ ├── JoinSemilattice.ts │ ├── Json.ts │ ├── Lattice.ts │ ├── Magma.ts │ ├── Map.ts │ ├── MeetSemilattice.ts │ ├── Monad.ts │ ├── MonadIO.ts │ ├── MonadTask.ts │ ├── MonadThrow.ts │ ├── Monoid.ts │ ├── NaturalTransformation.ts │ ├── NonEmptyArray.ts │ ├── Option.ts │ ├── OptionT.ts │ ├── Ord.ts │ ├── Ordering.ts │ ├── Pointed.ts │ ├── Predicate.ts │ ├── Profunctor.ts │ ├── Random.ts │ ├── Reader.ts │ ├── ReaderEither.ts │ ├── ReaderIO.ts │ ├── ReaderT.ts │ ├── ReaderTask.ts │ ├── ReaderTaskEither.ts │ ├── ReadonlyArray.ts │ ├── ReadonlyMap.ts │ ├── ReadonlyNonEmptyArray.ts │ ├── ReadonlyRecord.ts │ ├── ReadonlySet.ts │ ├── ReadonlyTuple.ts │ ├── Record.ts │ ├── Refinement.ts │ ├── Ring.ts │ ├── Semigroup.ts │ ├── Semigroupoid.ts │ ├── Semiring.ts │ ├── Separated.ts │ ├── Set.ts │ ├── Show.ts │ ├── State.ts │ ├── StateReaderTaskEither.ts │ ├── StateT.ts │ ├── Store.ts │ ├── Strong.ts │ ├── Task.ts │ ├── TaskEither.ts │ ├── TaskOption.ts │ ├── TaskThese.ts │ ├── These.ts │ ├── TheseT.ts │ ├── Traced.ts │ ├── Traversable.ts │ ├── TraversableWithIndex.ts │ ├── Tree.ts │ ├── Tuple.ts │ ├── Unfoldable.ts │ ├── ValidationT.ts │ ├── Witherable.ts │ ├── Writer.ts │ ├── WriterT.ts │ ├── Zero.ts │ ├── boolean.ts │ ├── function.ts │ ├── index.ts │ ├── internal.ts │ ├── number.ts │ ├── pipeable.ts │ ├── string.ts │ ├── struct.ts │ └── void.ts ├── test/ │ ├── Alternative.ts │ ├── Applicative.ts │ ├── Apply.ts │ ├── Array.ts │ ├── BooleanAlgebra.ts │ ├── Bounded.ts │ ├── BoundedDistributiveLattice.ts │ ├── Choice.ts │ ├── Compactable.ts │ ├── Console.ts │ ├── Const.ts │ ├── Date.ts │ ├── Either.ts │ ├── EitherT.ts │ ├── Endomorphism.ts │ ├── Eq.ts │ ├── Field.ts │ ├── Filterable.ts │ ├── Foldable.ts │ ├── FoldableWithIndex.ts │ ├── Functor.ts │ ├── FunctorWithIndex.ts │ ├── IO.ts │ ├── IOEither.ts │ ├── IOOption.ts │ ├── IORef.ts │ ├── Identity.ts │ ├── Json.ts │ ├── Magma.ts │ ├── Map.ts │ ├── Monoid.ts │ ├── NonEmptyArray.ts │ ├── Option.ts │ ├── OptionT.ts │ ├── Ord.ts │ ├── Ordering.ts │ ├── Predicate.ts │ ├── Random.ts │ ├── Reader.ts │ ├── ReaderEither.ts │ ├── ReaderIO.ts │ ├── ReaderT.ts │ ├── ReaderTask.ts │ ├── ReaderTaskEither.ts │ ├── ReadonlyArray.ts │ ├── ReadonlyMap.ts │ ├── ReadonlyNonEmptyArray.ts │ ├── ReadonlyRecord.ts │ ├── ReadonlySet.ts │ ├── ReadonlyTuple.ts │ ├── Record.ts │ ├── Refinement.ts │ ├── Ring.ts │ ├── Semigroup.ts │ ├── Separated.ts │ ├── Set.ts │ ├── Show.ts │ ├── State.ts │ ├── StateReaderTaskEither.ts │ ├── Store.ts │ ├── Strong.ts │ ├── Task.ts │ ├── TaskEither.ts │ ├── TaskOption.ts │ ├── TaskThese.ts │ ├── These.ts │ ├── Traced.ts │ ├── Traversable.ts │ ├── Tree.ts │ ├── Tuple.ts │ ├── ValidationT.ts │ ├── Witherable.ts │ ├── Writer.ts │ ├── boolean.ts │ ├── function.ts │ ├── index.ts │ ├── number.ts │ ├── pipeable.ts │ ├── string.ts │ ├── struct.ts │ └── util.ts ├── tsconfig.build-es6.json ├── tsconfig.build.json ├── tsconfig.eslint.json ├── tsconfig.json └── vite.config.ts
SYMBOL INDEX (1439 symbols across 169 files)
FILE: dtslint/Array.ts
type X1 (line 105) | interface X1 {
type X2 (line 120) | interface X2 {
FILE: dtslint/Either.ts
type D (line 29) | interface D {
FILE: dtslint/Functor.ts
constant F11 (line 7) | const F11 = _.map(RA.Functor, RA.Functor)
constant F12 (line 10) | const F12 = _.map(RA.Functor, E.Functor)
constant F13 (line 13) | const F13 = _.map(RA.Functor, RTE.Functor)
constant F21 (line 16) | const F21 = _.map(E.Functor, RA.Functor)
constant F22 (line 19) | const F22 = _.map(E.Functor, E.Functor)
constant F31 (line 22) | const F31 = _.map(RTE.Functor, RA.Functor)
FILE: dtslint/Json.ts
type AB (line 23) | interface AB {
FILE: dtslint/NonEmptyArray.ts
type X (line 42) | interface X {
FILE: dtslint/Option.ts
type D (line 21) | interface D {
FILE: dtslint/ReaderTask.ts
type R1 (line 5) | interface R1 {
type R2 (line 9) | interface R2 {
FILE: dtslint/ReadonlyArray.ts
type X1 (line 105) | interface X1 {
type X2 (line 120) | interface X2 {
type Registered (line 190) | interface Registered {
type Unregistered (line 194) | interface Unregistered {
type User (line 198) | type User = Registered | Unregistered
type Test (line 207) | interface Test {
FILE: dtslint/ReadonlyNonEmptyArray.ts
type X (line 42) | interface X {
FILE: dtslint/ReadonlyRecord.ts
function mapToBoolean (line 139) | function mapToBoolean(): { [K in keyof typeof constStruct]: boolean } {
type Keys (line 202) | type Keys = 'key1' | 'key2'
FILE: dtslint/Record.ts
type Keys (line 177) | type Keys = 'key1' | 'key2'
FILE: dtslint/constrained.ts
type _1 (line 31) | type _1 = Alt2C<'Either', string>['_E']
type _2 (line 34) | type _2 = Alt3C<'ReaderEither', string>['_E']
type _3 (line 37) | type _3 = Alternative2C<'Either', string>['_E']
type _4 (line 40) | type _4 = Alternative3C<'ReaderEither', string>['_E']
type _5 (line 43) | type _5 = Applicative2C<'Either', string>['_E']
type _6 (line 46) | type _6 = Applicative3C<'ReaderEither', string>['_E']
type _7 (line 49) | type _7 = Apply2C<'Either', string>['_E']
type _8 (line 52) | type _8 = Apply3C<'ReaderEither', string>['_E']
type _9 (line 55) | type _9 = Bifunctor2C<'Either', string>['_E']
type _10 (line 58) | type _10 = Bifunctor3C<'ReaderEither', string>['_E']
type _11 (line 61) | type _11 = Comonad2C<'Either', string>['_E']
type _12 (line 64) | type _12 = Comonad3C<'ReaderEither', string>['_E']
type _13 (line 67) | type _13 = Compactable2C<'Either', string>['_E']
type _14 (line 70) | type _14 = Compactable3C<'ReaderEither', string>['_E']
type _15 (line 73) | type _15 = Contravariant2C<'Either', string>['_E']
type _16 (line 76) | type _16 = Contravariant3C<'ReaderEither', string>['_E']
type _17 (line 79) | type _17 = Extend2C<'Either', string>['_E']
type _18 (line 82) | type _18 = Extend3C<'ReaderEither', string>['_E']
type _19 (line 85) | type _19 = Filterable2C<'Either', string>['_E']
type _20 (line 88) | type _20 = Filterable3C<'ReaderEither', string>['_E']
type _21 (line 91) | type _21 = FilterableWithIndex2C<'Either', number, string>['_E']
type _22 (line 94) | type _22 = Foldable2C<'Either', string>['_E']
type _23 (line 97) | type _23 = Foldable3C<'ReaderEither', string>['_E']
type _24 (line 100) | type _24 = FoldableWithIndex2C<'Either', number, string>['_E']
type _25 (line 103) | type _25 = FoldableWithIndex3C<'ReaderEither', number, string>['_E']
type _26 (line 106) | type _26 = FromEither2C<'Either', string>['_E']
type _27 (line 109) | type _27 = FromEither3C<'ReaderEither', string>['_E']
type _28 (line 112) | type _28 = FromIO2C<'Either', string>['_E']
type _29 (line 115) | type _29 = FromIO3C<'ReaderEither', string>['_E']
type _30 (line 118) | type _30 = FromTask2C<'Either', string>['_E']
type _31 (line 121) | type _31 = FromTask3C<'ReaderEither', string>['_E']
type _32 (line 124) | type _32 = Functor2C<'Either', string>['_E']
type _33 (line 127) | type _33 = Functor3C<'ReaderEither', string>['_E']
type _34 (line 130) | type _34 = FunctorWithIndex2C<'Either', number, string>['_E']
type _35 (line 133) | type _35 = FunctorWithIndex3C<'ReaderEither', number, string>['_E']
type _36 (line 136) | type _36 = Invariant2C<'Either', string>['_E']
type _37 (line 139) | type _37 = Invariant3C<'ReaderEither', string>['_E']
type _38 (line 142) | type _38 = Monad2C<'Either', string>['_E']
type _39 (line 145) | type _39 = Monad3C<'ReaderEither', string>['_E']
type _40 (line 148) | type _40 = Pointed2C<'Either', string>['_E']
type _41 (line 151) | type _41 = Pointed3C<'ReaderEither', string>['_E']
type _42 (line 154) | type _42 = Profunctor2C<'Either', string>['_E']
type _43 (line 157) | type _43 = Profunctor3C<'ReaderEither', string>['_E']
type _44 (line 160) | type _44 = Traversable2C<'Either', string>['_E']
type _45 (line 163) | type _45 = TraversableWithIndex2C<'Either', number, string>['_E']
type _46 (line 166) | type _46 = Unfoldable2C<'Either', string>['_E']
type _47 (line 169) | type _47 = Unfoldable3C<'ReaderEither', string>['_E']
type _48 (line 172) | type _48 = Witherable2C<'Either', string>['_E']
type _49 (line 175) | type _49 = Chain2C<'Either', string>['_E']
type _50 (line 178) | type _50 = Chain3C<'ReaderEither', string>['_E']
type _51 (line 181) | type _51 = ChainRec2C<'Either', string>['_E']
type _52 (line 184) | type _52 = ChainRec3C<'ReaderEither', string>['_E']
FILE: dtslint/index.ts
function testIssue536 (line 5) | function testIssue536<F extends _.URIS, G extends _.URIS, A>(x: _.Kind<F...
type HKT1 (line 16) | type HKT1 = _.Kind<'a', string>
type Tuple (line 18) | type Tuple<E, A> = readonly [A, E]
FILE: examples/fp-ts-to-the-max-I.ts
function ask (line 30) | function ask(question: string): T.Task<string> {
function parse (line 41) | function parse(s: string): O.Option<number> {
function shouldContinue (line 50) | function shouldContinue(name: string): T.Task<boolean> {
function gameLoop (line 66) | function gameLoop(name: string): T.Task<void> {
FILE: examples/fp-ts-to-the-max-II.ts
type Program (line 20) | interface Program<F extends URIS> extends Monad1<F> {
type Console (line 24) | interface Console<F extends URIS> {
type Random (line 29) | interface Random<F extends URIS> {
type Main (line 33) | interface Main<F extends URIS> extends Program<F>, Console<F>, Random<F> {}
function parse (line 74) | function parse(s: string): O.Option<number> {
function main (line 79) | function main<F extends URIS>(F: Main<F>): Kind<F, void> {
class TestData (line 153) | class TestData {
method constructor (line 154) | constructor(
method putStrLn (line 159) | putStrLn(message: string): [void, TestData] {
method getStrLn (line 162) | getStrLn(): [string, TestData] {
method nextInt (line 165) | nextInt(_upper: number): [number, TestData] {
constant URI (line 170) | const URI = 'Test'
type URI (line 172) | type URI = typeof URI
type URItoKind (line 175) | interface URItoKind<A> {
type Test (line 180) | interface Test<A> extends S.State<TestData, A> {}
FILE: perf/function/flow.ts
function flow2 (line 6) | function flow2(...fns: ReadonlyArray<Function>): Function {
FILE: perf/function/pipe.ts
function pipe2 (line 6) | function pipe2(a: unknown, ...fns: ReadonlyArray<Function>): unknown {
FILE: scripts/FileSystem.ts
type FileSystem (line 7) | interface FileSystem {
FILE: scripts/build.ts
type Build (line 11) | interface Build<A> extends RTE.ReaderTaskEither<FileSystem, Error, A> {}
constant OUTPUT_FOLDER (line 13) | const OUTPUT_FOLDER = 'dist'
constant PKG (line 14) | const PKG = 'package.json'
constant FILES (line 32) | const FILES: ReadonlyArray<string> = ['CHANGELOG.md', 'LICENSE', 'README...
function getModules (line 50) | function getModules(paths: ReadonlyArray<string>): ReadonlyArray<string> {
function makeSingleModule (line 54) | function makeSingleModule(C: FileSystem): (module: string) => TE.TaskEit...
function makePkgJson (line 63) | function makePkgJson(module: string): TE.TaskEither<Error, string> {
FILE: scripts/linter.ts
type Overloadings (line 15) | interface Overloadings {
type TypeParameter (line 20) | interface TypeParameter {
type Parameter (line 25) | interface Parameter {
type Signature (line 30) | interface Signature {
type TypeReference (line 37) | interface TypeReference {
type InferType (line 43) | interface InferType {
type Token (line 48) | interface Token {
type TypeOperator (line 52) | interface TypeOperator {
type MappedType (line 57) | interface MappedType {
type UnionType (line 63) | interface UnionType {
type TypeParameterDeclaration (line 68) | interface TypeParameterDeclaration {
type ConditionalType (line 74) | interface ConditionalType {
type IndexedAccessType (line 82) | interface IndexedAccessType {
type TupleType (line 88) | interface TupleType {
type RestType (line 93) | interface RestType {
type LiteralType (line 98) | interface LiteralType {
type IntersectionType (line 102) | interface IntersectionType {
type Type (line 107) | type Type =
type FunctionDeclaration (line 124) | interface FunctionDeclaration {
type File (line 129) | interface File {
function parseType (line 155) | function parseType(
type Lint (line 424) | interface Lint {
FILE: scripts/release.ts
constant DIST (line 7) | const DIST = 'dist'
FILE: scripts/run.ts
function run (line 4) | function run<A>(eff: TaskEither<Error, A>): void {
FILE: src/Alt.ts
type Alt (line 25) | interface Alt<F> extends Functor<F> {
type Alt1 (line 33) | interface Alt1<F extends URIS> extends Functor1<F> {
type Alt2 (line 41) | interface Alt2<F extends URIS2> extends Functor2<F> {
type Alt2C (line 49) | interface Alt2C<F extends URIS2, E> extends Functor2C<F, E> {
type Alt3 (line 57) | interface Alt3<F extends URIS3> extends Functor3<F> {
type Alt3C (line 65) | interface Alt3C<F extends URIS3, E> extends Functor3C<F, E> {
type Alt4 (line 73) | interface Alt4<F extends URIS4> extends Functor4<F> {
function altAll (line 103) | function altAll<F>(F: Alt<F>): <A>(startWith: HKT<F, A>) => (as: Readonl...
FILE: src/Alternative.ts
type Alternative (line 41) | interface Alternative<F> extends Applicative<F>, Alt<F>, Zero<F> {}
type Alternative1 (line 47) | interface Alternative1<F extends URIS> extends Applicative1<F>, Alt1<F>,...
type Alternative2 (line 53) | interface Alternative2<F extends URIS2> extends Applicative2<F>, Alt2<F>...
type Alternative2C (line 59) | interface Alternative2C<F extends URIS2, E> extends Applicative2C<F, E>,...
type Alternative3 (line 65) | interface Alternative3<F extends URIS3> extends Applicative3<F>, Alt3<F>...
type Alternative3C (line 71) | interface Alternative3C<F extends URIS3, E> extends Applicative3C<F, E>,...
type Alternative4 (line 77) | interface Alternative4<F extends URIS4> extends Applicative4<F>, Alt4<F>...
function altAll (line 101) | function altAll<F>(F: Alternative<F>): <A>(as: ReadonlyArray<HKT<F, A>>)...
function getAlternativeMonoid (line 126) | function getAlternativeMonoid<F>(F: Alternative<F>): <A>(S: Semigroup<A>...
FILE: src/Applicative.ts
type Applicative (line 48) | interface Applicative<F> extends Apply<F>, Pointed<F> {}
type Applicative1 (line 54) | interface Applicative1<F extends URIS> extends Apply1<F>, Pointed1<F> {}
type Applicative2 (line 60) | interface Applicative2<F extends URIS2> extends Apply2<F>, Pointed2<F> {}
type Applicative2C (line 66) | interface Applicative2C<F extends URIS2, E> extends Apply2C<F, E>, Point...
type Applicative3 (line 72) | interface Applicative3<F extends URIS3> extends Apply3<F>, Pointed3<F> {}
type Applicative3C (line 78) | interface Applicative3C<F extends URIS3, E> extends Apply3C<F, E>, Point...
type Applicative4 (line 84) | interface Applicative4<F extends URIS4> extends Apply4<F>, Pointed4<F> {}
function getApplicativeMonoid (line 112) | function getApplicativeMonoid<F>(F: Applicative<F>): <A>(M: Monoid<A>) =...
type ApplicativeComposition (line 129) | interface ApplicativeComposition<F, G> extends FunctorComposition<F, G> {
type ApplicativeCompositionHKT1 (line 139) | interface ApplicativeCompositionHKT1<F, G extends URIS> extends FunctorC...
type ApplicativeCompositionHKT2 (line 149) | interface ApplicativeCompositionHKT2<F, G extends URIS2> extends Functor...
type ApplicativeCompositionHKT2C (line 159) | interface ApplicativeCompositionHKT2C<F, G extends URIS2, E> extends Fun...
type ApplicativeComposition11 (line 169) | interface ApplicativeComposition11<F extends URIS, G extends URIS> exten...
type ApplicativeComposition12 (line 179) | interface ApplicativeComposition12<F extends URIS, G extends URIS2> exte...
type ApplicativeComposition12C (line 192) | interface ApplicativeComposition12C<F extends URIS, G extends URIS2, E> ...
type ApplicativeComposition21 (line 202) | interface ApplicativeComposition21<F extends URIS2, G extends URIS> exte...
type ApplicativeComposition2C1 (line 215) | interface ApplicativeComposition2C1<F extends URIS2, G extends URIS, E> ...
type ApplicativeComposition22 (line 225) | interface ApplicativeComposition22<F extends URIS2, G extends URIS2> ext...
type ApplicativeComposition22C (line 238) | interface ApplicativeComposition22C<F extends URIS2, G extends URIS2, E>...
function getApplicativeComposition (line 305) | function getApplicativeComposition<F, G>(F: Applicative<F>, G: Applicati...
FILE: src/Apply.ts
type Apply (line 52) | interface Apply<F> extends Functor<F> {
type Apply1 (line 60) | interface Apply1<F extends URIS> extends Functor1<F> {
type Apply2 (line 68) | interface Apply2<F extends URIS2> extends Functor2<F> {
type Apply2C (line 76) | interface Apply2C<F extends URIS2, E> extends Functor2C<F, E> {
type Apply3 (line 84) | interface Apply3<F extends URIS3> extends Functor3<F> {
type Apply3C (line 92) | interface Apply3C<F extends URIS3, E> extends Functor3C<F, E> {
type Apply4 (line 100) | interface Apply4<F extends URIS4> extends Functor4<F> {
function ap (line 351) | function ap<F, G>(
function apFirst (line 383) | function apFirst<F>(A: Apply<F>): <B>(second: HKT<F, B>) => <A>(first: H...
function apSecond (line 411) | function apSecond<F>(A: Apply<F>): <B>(second: HKT<F, B>) => <A>(first: ...
function apS (line 465) | function apS<F>(
function getApplySemigroup (line 503) | function getApplySemigroup<F>(F: Apply<F>): <A>(S: Semigroup<A>) => Semi...
function curried (line 513) | function curried(f: Function, n: number, acc: ReadonlyArray<unknown>) {
function getTupleConstructor (line 532) | function getTupleConstructor(len: number): (a: unknown) => any {
function sequenceT (line 588) | function sequenceT<F>(F: Apply<F>): any {
type EnforceNonEmptyRecord (line 600) | type EnforceNonEmptyRecord<R> = keyof R extends never ? never : R
function getRecordConstructor (line 602) | function getRecordConstructor(keys: ReadonlyArray<string>) {
function sequenceS (line 702) | function sequenceS<F>(F: Apply<F>): (r: Record<string, HKT<F, any>>) => ...
FILE: src/Array.ts
function fromPredicate (line 200) | function fromPredicate<A>(predicate: Predicate<A>): (a: A) => Array<A> {
function takeLeftWhile (line 615) | function takeLeftWhile<A>(predicate: Predicate<A>): (as: Array<A>) => Ar...
type Spanned (line 644) | interface Spanned<I, R> {
function spanLeft (line 667) | function spanLeft<A>(predicate: Predicate<A>): (as: Array<A>) => Spanned...
function dropLeftWhile (line 728) | function dropLeftWhile<A>(predicate: Predicate<A>): (as: Array<A>) => Ar...
function findFirst (line 768) | function findFirst<A>(predicate: Predicate<A>): (as: Array<A>) => Option...
function findLast (line 821) | function findLast<A>(predicate: Predicate<A>): (as: Array<A>) => Option<...
function zip (line 1058) | function zip<A, B>(as: Array<A>, bs?: Array<B>): Array<[A, B]> | ((bs: A...
function comprehension (line 1312) | function comprehension<A, R>(
function union (line 1356) | function union<A>(E: Eq<A>): (xs: Array<A>, ys?: Array<A>) => Array<A> |...
function intersection (line 1389) | function intersection<A>(E: Eq<A>): (xs: Array<A>, ys?: Array<A>) => Arr...
function difference (line 1418) | function difference<A>(E: Eq<A>): (xs: Array<A>, ys?: Array<A>) => Array...
constant URI (line 2217) | const URI = 'Array'
type URI (line 2223) | type URI = typeof URI
type URItoKind (line 2226) | interface URItoKind<A> {
FILE: src/Bifunctor.ts
type Bifunctor (line 14) | interface Bifunctor<F> {
type Bifunctor2 (line 24) | interface Bifunctor2<F extends URIS2> {
type Bifunctor2C (line 34) | interface Bifunctor2C<F extends URIS2, E> {
type Bifunctor3 (line 45) | interface Bifunctor3<F extends URIS3> {
type Bifunctor3C (line 55) | interface Bifunctor3C<F extends URIS3, E> {
type Bifunctor4 (line 66) | interface Bifunctor4<F extends URIS4> {
FILE: src/BooleanAlgebra.ts
type BooleanAlgebra (line 24) | interface BooleanAlgebra<A> extends HeytingAlgebra<A> {}
FILE: src/Bounded.ts
type Bounded (line 22) | interface Bounded<A> extends Ord<A> {
FILE: src/BoundedDistributiveLattice.ts
type BoundedDistributiveLattice (line 18) | interface BoundedDistributiveLattice<A> extends BoundedLattice<A>, Distr...
function getMinMaxBoundedDistributiveLattice (line 28) | function getMinMaxBoundedDistributiveLattice<A>(O: Ord<A>): (min: A, max...
FILE: src/BoundedJoinSemilattice.ts
type BoundedJoinSemilattice (line 18) | interface BoundedJoinSemilattice<A> extends JoinSemilattice<A> {
FILE: src/BoundedLattice.ts
type BoundedLattice (line 20) | interface BoundedLattice<A> extends BoundedJoinSemilattice<A>, BoundedMe...
FILE: src/BoundedMeetSemilattice.ts
type BoundedMeetSemilattice (line 18) | interface BoundedMeetSemilattice<A> extends MeetSemilattice<A> {
FILE: src/Category.ts
type Category (line 15) | interface Category<F> extends Semigroupoid<F> {
type Category2 (line 23) | interface Category2<F extends URIS2> extends Semigroupoid2<F> {
type Category3 (line 31) | interface Category3<F extends URIS3> extends Semigroupoid3<F> {
type Category4 (line 39) | interface Category4<F extends URIS4> extends Semigroupoid4<F> {
FILE: src/Chain.ts
type Chain (line 24) | interface Chain<F> extends Apply<F> {
type Chain1 (line 32) | interface Chain1<F extends URIS> extends Apply1<F> {
type Chain2 (line 40) | interface Chain2<F extends URIS2> extends Apply2<F> {
type Chain2C (line 48) | interface Chain2C<F extends URIS2, E> extends Apply2C<F, E> {
type Chain3 (line 56) | interface Chain3<F extends URIS3> extends Apply3<F> {
type Chain3C (line 64) | interface Chain3C<F extends URIS3, E> extends Apply3C<F, E> {
type Chain4 (line 72) | interface Chain4<F extends URIS4> extends Apply4<F> {
function chainFirst (line 102) | function chainFirst<M>(M: Chain<M>): <A, _>(f: (a: A) => HKT<M, _>) => (...
function tap (line 127) | function tap<M>(M: Chain<M>): <A, _>(first: HKT<M, A>, f: (a: A) => HKT<...
function bind (line 180) | function bind<M>(
FILE: src/ChainRec.ts
type ChainRec (line 16) | interface ChainRec<F> extends Chain<F> {
type ChainRec1 (line 24) | interface ChainRec1<F extends URIS> extends Chain1<F> {
type ChainRec2 (line 32) | interface ChainRec2<F extends URIS2> extends Chain2<F> {
type ChainRec2C (line 40) | interface ChainRec2C<F extends URIS2, E> extends Chain2C<F, E> {
type ChainRec3 (line 48) | interface ChainRec3<F extends URIS3> extends Chain3<F> {
type ChainRec3C (line 56) | interface ChainRec3C<F extends URIS3, E> extends Chain3C<F, E> {
type ChainRec4 (line 64) | interface ChainRec4<F extends URIS4> extends Chain4<F> {
FILE: src/Choice.ts
type Choice (line 45) | interface Choice<F> extends Profunctor<F> {
type Choice2 (line 54) | interface Choice2<F extends URIS2> extends Profunctor2<F> {
type Choice3 (line 63) | interface Choice3<F extends URIS3> extends Profunctor3<F> {
type Choice4 (line 72) | interface Choice4<F extends URIS4> extends Profunctor4<F> {
function split (line 112) | function split<P>(
function fanIn (line 157) | function fanIn<P>(
function splitChoice (line 191) | function splitChoice<F>(
function fanin (line 214) | function fanin<F>(
FILE: src/Comonad.ts
type Comonad (line 15) | interface Comonad<W> extends Extend<W> {
type Comonad1 (line 23) | interface Comonad1<W extends URIS> extends Extend1<W> {
type Comonad2 (line 31) | interface Comonad2<W extends URIS2> extends Extend2<W> {
type Comonad2C (line 39) | interface Comonad2C<W extends URIS2, E> extends Extend2C<W, E> {
type Comonad3 (line 47) | interface Comonad3<W extends URIS3> extends Extend3<W> {
type Comonad3C (line 55) | interface Comonad3C<W extends URIS3, E> extends Extend3C<W, E> {
type Comonad4 (line 63) | interface Comonad4<W extends URIS4> extends Extend4<W> {
FILE: src/Compactable.ts
type Compactable (line 45) | interface Compactable<F> {
type Compactable1 (line 61) | interface Compactable1<F extends URIS> {
type Compactable2 (line 71) | interface Compactable2<F extends URIS2> {
type Compactable2C (line 81) | interface Compactable2C<F extends URIS2, E> {
type Compactable3 (line 92) | interface Compactable3<F extends URIS3> {
type Compactable3C (line 102) | interface Compactable3C<F extends URIS3, E> {
type Compactable4 (line 113) | interface Compactable4<F extends URIS4> {
function compact (line 143) | function compact<F, G>(
function separate (line 177) | function separate<F, G>(
type CompactableComposition (line 196) | interface CompactableComposition<F, G> extends FunctorComposition<F, G> {
type CompactableComposition11 (line 206) | interface CompactableComposition11<F extends URIS, G extends URIS> exten...
type CompactableComposition12 (line 216) | interface CompactableComposition12<F extends URIS, G extends URIS2> exte...
type CompactableComposition12C (line 228) | interface CompactableComposition12C<F extends URIS, G extends URIS2, E> ...
type CompactableComposition21 (line 240) | interface CompactableComposition21<F extends URIS2, G extends URIS> exte...
type CompactableComposition2C1 (line 252) | interface CompactableComposition2C1<F extends URIS2, G extends URIS, E> ...
type CompactableComposition22 (line 264) | interface CompactableComposition22<F extends URIS2, G extends URIS2> ext...
type CompactableComposition22C (line 276) | interface CompactableComposition22C<F extends URIS2, G extends URIS2, E>...
type CompactableComposition23 (line 288) | interface CompactableComposition23<F extends URIS2, G extends URIS3> ext...
type CompactableComposition23C (line 300) | interface CompactableComposition23C<F extends URIS2, G extends URIS3, E>...
function getCompactableComposition (line 359) | function getCompactableComposition<F, G>(
type Separated (line 377) | interface Separated<A, B> {
FILE: src/Const.ts
type Const (line 35) | type Const<E, A> = E & { readonly _A: A }
function getShow (line 47) | function getShow<E, A>(S: Show<E>): Show<Const<E, A>> {
function getApply (line 111) | function getApply<E>(S: Semigroup<E>): Apply2C<URI, E> {
function getApplicative (line 124) | function getApplicative<E>(M: Monoid<E>): Applicative2C<URI, E> {
constant URI (line 178) | const URI = 'Const'
type URI (line 184) | type URI = typeof URI
type URItoKind2 (line 187) | interface URItoKind2<E, A> {
FILE: src/Contravariant.ts
type Contravariant (line 14) | interface Contravariant<F> {
type Contravariant1 (line 23) | interface Contravariant1<F extends URIS> {
type Contravariant2 (line 32) | interface Contravariant2<F extends URIS2> {
type Contravariant2C (line 41) | interface Contravariant2C<F extends URIS2, E> {
type Contravariant3 (line 51) | interface Contravariant3<F extends URIS3> {
type Contravariant3C (line 60) | interface Contravariant3C<F extends URIS3, E> {
type Contravariant4 (line 70) | interface Contravariant4<F extends URIS4> {
FILE: src/DistributiveLattice.ts
type DistributiveLattice (line 20) | interface DistributiveLattice<A> extends Lattice<A> {}
function getMinMaxDistributiveLattice (line 30) | function getMinMaxDistributiveLattice<A>(O: Ord<A>): DistributiveLattice...
FILE: src/Either.ts
type Left (line 116) | interface Left<E> {
type Right (line 125) | interface Right<A> {
type Either (line 134) | type Either<E, A> = Left<E> | Right<A>
constant URI (line 202) | const URI = 'Either'
type URI (line 208) | type URI = typeof URI
type URItoKind2 (line 211) | interface URItoKind2<E, A> {
type EitherTypeLambda (line 1204) | interface EitherTypeLambda extends _.TypeLambda {
function toError (line 1458) | function toError(e: unknown): Error {
function elem (line 1473) | function elem<A>(E: Eq<A>): <E>(a: A, ma?: Either<E, A>) => boolean | ((...
type Json (line 1688) | type Json = boolean | number | string | null | JsonArray | JsonRecord
type JsonRecord (line 1697) | interface JsonRecord {
type JsonArray (line 1708) | interface JsonArray extends ReadonlyArray<Json> {}
function parseJSON (line 1717) | function parseJSON<E>(s: string, onError: (reason: unknown) => E): Eithe...
function getValidation (line 1822) | function getValidation<E>(
FILE: src/EitherT.ts
function right (line 36) | function right<F>(F: Pointed<F>): <A, E = never>(a: A) => HKT<F, Either<...
function left (line 49) | function left<F>(F: Pointed<F>): <E, A = never>(e: E) => HKT<F, Either<E...
function rightF (line 70) | function rightF<F>(F: Functor<F>): <A, E = never>(fa: HKT<F, A>) => HKT<...
function leftF (line 91) | function leftF<F>(F: Functor<F>): <E, A = never>(fe: HKT<F, E>) => HKT<F...
function fromNullable (line 114) | function fromNullable<F>(F: Pointed<F>): <E>(e: E) => <A>(a: A) => HKT<F...
function fromNullableK (line 163) | function fromNullableK<F>(
function chainNullableK (line 218) | function chainNullableK<M>(
function map (line 250) | function map<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => <E>(fa: HKT<F,...
function ap (line 283) | function ap<F>(
function chain (line 316) | function chain<M>(
function flatMap (line 336) | function flatMap<M>(
function alt (line 371) | function alt<M>(
function bimap (line 404) | function bimap<F>(
function mapBoth (line 424) | function mapBoth<F>(
function mapLeft (line 451) | function mapLeft<F>(
function mapError (line 471) | function mapError<F>(
function altValidation (line 511) | function altValidation<M, E>(
function match (line 554) | function match<F>(
function matchE (line 593) | function matchE<M>(
function getOrElse (line 620) | function getOrElse<M>(
function orElse (line 659) | function orElse<M>(
function orElseFirst (line 695) | function orElseFirst<M>(
function tapError (line 715) | function tapError<M>(
function orLeft (line 754) | function orLeft<M>(
function swap (line 788) | function swap<F>(F: Functor<F>): <E, A>(ma: HKT<F, Either<E, A>>) => HKT...
function toUnion (line 809) | function toUnion<F>(F: Functor<F>): <E, A>(fa: HKT<F, Either<E, A>>) => ...
type EitherT (line 825) | interface EitherT<M, E, A> extends HKT<M, Either<E, A>> {}
type EitherM (line 832) | interface EitherM<M> extends ApplicativeCompositionHKT2<M, URI> {
type EitherT1 (line 851) | type EitherT1<M extends URIS, E, A> = Kind<M, Either<E, A>>
type EitherM1 (line 858) | interface EitherM1<M extends URIS> extends ApplicativeComposition12<M, U...
type EitherT2 (line 881) | type EitherT2<M extends URIS2, R, E, A> = Kind2<M, R, Either<E, A>>
type EitherM2 (line 888) | interface EitherM2<M extends URIS2> extends ApplicativeComposition22<M, ...
function getEitherM (line 921) | function getEitherM<M>(M: Monad<M>): EitherM<M> {
FILE: src/Endomorphism.ts
type Endomorphism (line 16) | interface Endomorphism<A> {
constant URI (line 24) | const URI = 'Endomorphism'
type URI (line 30) | type URI = typeof URI
type URItoKind (line 33) | interface URItoKind<A> {
FILE: src/Eq.ts
type Eq (line 26) | interface Eq<A> {
constant URI (line 138) | const URI = 'Eq'
type URI (line 144) | type URI = typeof URI
type URItoKind (line 147) | interface URItoKind<A> {
FILE: src/Extend.ts
type Extend (line 15) | interface Extend<W> extends Functor<W> {
type Extend1 (line 23) | interface Extend1<W extends URIS> extends Functor1<W> {
type Extend2 (line 31) | interface Extend2<W extends URIS2> extends Functor2<W> {
type Extend2C (line 39) | interface Extend2C<W extends URIS2, E> extends Functor2C<W, E> {
type Extend3 (line 47) | interface Extend3<W extends URIS3> extends Functor3<W> {
type Extend3C (line 55) | interface Extend3C<W extends URIS3, E> extends Functor3C<W, E> {
type Extend4 (line 63) | interface Extend4<W extends URIS4> extends Functor4<W> {
FILE: src/Field.ts
type Field (line 17) | interface Field<A> extends Ring<A> {
function gcd (line 32) | function gcd<A>(E: Eq<A>, field: Field<A>): (x: A, y: A) => A {
function lcm (line 43) | function lcm<A>(E: Eq<A>, F: Field<A>): (x: A, y: A) => A {
FILE: src/Filterable.ts
type Filter (line 58) | interface Filter<F> {
type Partition (line 66) | interface Partition<F> {
type Filterable (line 75) | interface Filterable<F> extends Functor<F>, Compactable<F> {
type Filter1 (line 97) | interface Filter1<F extends URIS> {
type Partition1 (line 105) | interface Partition1<F extends URIS> {
type Filterable1 (line 114) | interface Filterable1<F extends URIS> extends Functor1<F>, Compactable1<...
type Filter2 (line 124) | interface Filter2<F extends URIS2> {
type Partition2 (line 132) | interface Partition2<F extends URIS2> {
type Filterable2 (line 141) | interface Filterable2<F extends URIS2> extends Functor2<F>, Compactable2...
type Filter2C (line 154) | interface Filter2C<F extends URIS2, E> {
type Partition2C (line 162) | interface Partition2C<F extends URIS2, E> {
type Filterable2C (line 171) | interface Filterable2C<F extends URIS2, E> extends Functor2C<F, E>, Comp...
type Filter3 (line 184) | interface Filter3<F extends URIS3> {
type Partition3 (line 192) | interface Partition3<F extends URIS3> {
type Filterable3 (line 204) | interface Filterable3<F extends URIS3> extends Functor3<F>, Compactable3...
type Filter3C (line 217) | interface Filter3C<F extends URIS3, E> {
type Partition3C (line 225) | interface Partition3C<F extends URIS3, E> {
type Filterable3C (line 237) | interface Filterable3C<F extends URIS3, E> extends Functor3C<F, E>, Comp...
type Filter4 (line 250) | interface Filter4<F extends URIS4> {
type Partition4 (line 258) | interface Partition4<F extends URIS4> {
type Filterable4 (line 270) | interface Filterable4<F extends URIS4> extends Functor4<F>, Compactable4...
function filter (line 321) | function filter<F, G>(
function filterMap (line 349) | function filterMap<F, G>(
function partition (line 411) | function partition<F, G>(
function partitionMap (line 450) | function partitionMap<F, G>(
type FilterableComposition (line 477) | interface FilterableComposition<F, G> extends FunctorComposition<F, G>, ...
type FilterableComposition11 (line 495) | interface FilterableComposition11<F extends URIS, G extends URIS>
type FilterableComposition12 (line 515) | interface FilterableComposition12<F extends URIS, G extends URIS2>
type FilterableComposition12C (line 535) | interface FilterableComposition12C<F extends URIS, G extends URIS2, E>
type FilterableComposition21 (line 555) | interface FilterableComposition21<F extends URIS2, G extends URIS>
type FilterableComposition2C1 (line 575) | interface FilterableComposition2C1<F extends URIS2, G extends URIS, E>
type FilterableComposition22 (line 595) | interface FilterableComposition22<F extends URIS2, G extends URIS2>
type FilterableComposition22C (line 621) | interface FilterableComposition22C<F extends URIS2, G extends URIS2, E>
type FilterableComposition23C (line 644) | interface FilterableComposition23C<F extends URIS2, G extends URIS3, E>
function getFilterableComposition (line 721) | function getFilterableComposition<F, G>(F: Functor<F>, G: Filterable<G>)...
FILE: src/FilterableWithIndex.ts
type RefinementWithIndex (line 34) | type RefinementWithIndex<I, A, B extends A> = (i: I, a: A) => a is B
type PredicateWithIndex (line 39) | type PredicateWithIndex<I, A> = (i: I, a: A) => boolean
type FilterWithIndex (line 44) | interface FilterWithIndex<F, I> {
type PartitionWithIndex (line 52) | interface PartitionWithIndex<F, I> {
type FilterableWithIndex (line 61) | interface FilterableWithIndex<F, I> extends FunctorWithIndex<F, I>, Filt...
type FilterWithIndex1 (line 74) | interface FilterWithIndex1<F extends URIS, I> {
type PartitionWithIndex1 (line 82) | interface PartitionWithIndex1<F extends URIS, I> {
type FilterableWithIndex1 (line 91) | interface FilterableWithIndex1<F extends URIS, I> extends FunctorWithInd...
type FilterWithIndex2 (line 104) | interface FilterWithIndex2<F extends URIS2, I> {
type PartitionWithIndex2 (line 112) | interface PartitionWithIndex2<F extends URIS2, I> {
type FilterableWithIndex2 (line 124) | interface FilterableWithIndex2<F extends URIS2, I> extends FunctorWithIn...
type FilterWithIndex2C (line 137) | interface FilterWithIndex2C<F extends URIS2, I, E> {
type PartitionWithIndex2C (line 145) | interface PartitionWithIndex2C<F extends URIS2, I, E> {
type FilterableWithIndex2C (line 157) | interface FilterableWithIndex2C<F extends URIS2, I, E> extends FunctorWi...
type FilterWithIndex3 (line 170) | interface FilterWithIndex3<F extends URIS3, I> {
type FilterWithIndex3C (line 178) | interface FilterWithIndex3C<F extends URIS3, I, E> {
type FilterableWithIndex3C (line 187) | interface FilterableWithIndex3C<F extends URIS3, I, E> extends FunctorWi...
type PartitionWithIndex3 (line 200) | interface PartitionWithIndex3<F extends URIS3, I> {
type PartitionWithIndex3C (line 214) | interface PartitionWithIndex3C<F extends URIS3, I, E> {
type FilterableWithIndex3 (line 229) | interface FilterableWithIndex3<F extends URIS3, I> extends FunctorWithIn...
type FilterWithIndex4 (line 242) | interface FilterWithIndex4<F extends URIS4, I> {
type PartitionWithIndex4 (line 256) | interface PartitionWithIndex4<F extends URIS4, I> {
type FilterableWithIndex4 (line 271) | interface FilterableWithIndex4<F extends URIS4, I> extends FunctorWithIn...
FILE: src/Foldable.ts
type Foldable (line 18) | interface Foldable<F> {
type Foldable1 (line 29) | interface Foldable1<F extends URIS> {
type Foldable2 (line 40) | interface Foldable2<F extends URIS2> {
type Foldable2C (line 51) | interface Foldable2C<F extends URIS2, E> {
type Foldable3 (line 63) | interface Foldable3<F extends URIS3> {
type Foldable3C (line 74) | interface Foldable3C<F extends URIS3, E> {
type Foldable4 (line 86) | interface Foldable4<F extends URIS4> {
function reduce (line 110) | function reduce<F, G>(
function foldMap (line 130) | function foldMap<F, G>(
function reduceRight (line 154) | function reduceRight<F, G>(
function reduceM (line 205) | function reduceM<M, F>(
function intercalate (line 237) | function intercalate<M, F>(M: Monoid<M>, F: Foldable<F>): (middle: M, fm...
function toReadonlyArray (line 272) | function toReadonlyArray<F>(F: Foldable<F>): <A>(fa: HKT<F, A>) => Reado...
function traverse_ (line 316) | function traverse_<M, F>(
function foldM (line 365) | function foldM<M, F>(
type FoldableComposition (line 386) | interface FoldableComposition<F, G> {
type FoldableComposition11 (line 397) | interface FoldableComposition11<F extends URIS, G extends URIS> {
type FoldableComposition12 (line 408) | interface FoldableComposition12<F extends URIS, G extends URIS2> {
type FoldableComposition12C (line 419) | interface FoldableComposition12C<F extends URIS, G extends URIS2, E> {
type FoldableComposition21 (line 430) | interface FoldableComposition21<F extends URIS2, G extends URIS> {
type FoldableComposition2C1 (line 441) | interface FoldableComposition2C1<F extends URIS2, G extends URIS, E> {
type FoldableComposition22 (line 452) | interface FoldableComposition22<F extends URIS2, G extends URIS2> {
type FoldableComposition22C (line 463) | interface FoldableComposition22C<F extends URIS2, G extends URIS2, E> {
function getFoldableComposition (line 519) | function getFoldableComposition<F, G>(F: Foldable<F>, G: Foldable<G>): F...
FILE: src/FoldableWithIndex.ts
type FoldableWithIndex (line 43) | interface FoldableWithIndex<F, I> extends Foldable<F> {
type FoldableWithIndex1 (line 53) | interface FoldableWithIndex1<F extends URIS, I> extends Foldable1<F> {
type FoldableWithIndex2 (line 63) | interface FoldableWithIndex2<F extends URIS2, I> extends Foldable2<F> {
type FoldableWithIndex2C (line 73) | interface FoldableWithIndex2C<F extends URIS2, I, E> extends Foldable2C<...
type FoldableWithIndex3 (line 83) | interface FoldableWithIndex3<F extends URIS3, I> extends Foldable3<F> {
type FoldableWithIndex3C (line 93) | interface FoldableWithIndex3C<F extends URIS3, I, E> extends Foldable3C<...
type FoldableWithIndex4 (line 103) | interface FoldableWithIndex4<F extends URIS4, I> extends Foldable4<F> {
function reduceWithIndex (line 126) | function reduceWithIndex<F, I, G, J>(
function foldMapWithIndex (line 147) | function foldMapWithIndex<F, I, G, J>(
function reduceRightWithIndex (line 171) | function reduceRightWithIndex<F, I, G, J>(
type FoldableWithIndexComposition (line 188) | interface FoldableWithIndexComposition<F, FI, G, GI> extends FoldableCom...
type FoldableWithIndexComposition11 (line 199) | interface FoldableWithIndexComposition11<F extends URIS, FI, G extends U...
type FoldableWithIndexComposition12 (line 211) | interface FoldableWithIndexComposition12<F extends URIS, FI, G extends U...
type FoldableWithIndexComposition12C (line 223) | interface FoldableWithIndexComposition12C<F extends URIS, FI, G extends ...
type FoldableWithIndexComposition21 (line 235) | interface FoldableWithIndexComposition21<F extends URIS2, FI, G extends ...
type FoldableWithIndexComposition2C1 (line 249) | interface FoldableWithIndexComposition2C1<F extends URIS2, FI, G extends...
type FoldableWithIndexComposition22 (line 261) | interface FoldableWithIndexComposition22<F extends URIS2, FI, G extends ...
type FoldableWithIndexComposition22C (line 283) | interface FoldableWithIndexComposition22C<F extends URIS2, FI, G extends...
function getFoldableWithIndexComposition (line 349) | function getFoldableWithIndexComposition<F, FI, G, GI>(
FILE: src/FromEither.ts
type FromEither (line 24) | interface FromEither<F> {
type FromEither1 (line 33) | interface FromEither1<F extends URIS> {
type FromEither2 (line 42) | interface FromEither2<F extends URIS2> {
type FromEither2C (line 51) | interface FromEither2C<F extends URIS2, E> {
type FromEither3 (line 61) | interface FromEither3<F extends URIS3> {
type FromEither3C (line 70) | interface FromEither3C<F extends URIS3, E> {
type FromEither4 (line 80) | interface FromEither4<F extends URIS4> {
function fromOption (line 109) | function fromOption<F>(F: FromEither<F>): <E>(onNone: LazyArg<E>) => <A>...
function fromPredicate (line 157) | function fromPredicate<F>(F: FromEither<F>): {
function fromOptionK (line 204) | function fromOptionK<F>(
function chainOptionK (line 243) | function chainOptionK<F extends URIS2>(
function fromEitherK (line 278) | function fromEitherK<F>(
function chainEitherK (line 315) | function chainEitherK<M extends URIS2>(
function chainFirstEitherK (line 354) | function chainFirstEitherK<M extends URIS2>(
function filterOrElse (line 419) | function filterOrElse<M extends URIS2>(
function tapEither (line 468) | function tapEither<M extends URIS2>(
FILE: src/FromIO.ts
type FromIO (line 19) | interface FromIO<F> {
type FromIO1 (line 28) | interface FromIO1<F extends URIS> {
type FromIO2 (line 37) | interface FromIO2<F extends URIS2> {
type FromIO2C (line 46) | interface FromIO2C<F extends URIS2, E> {
type FromIO3 (line 56) | interface FromIO3<F extends URIS3> {
type FromIO3C (line 65) | interface FromIO3C<F extends URIS3, E> {
type FromIO4 (line 75) | interface FromIO4<F extends URIS4> {
function fromIOK (line 108) | function fromIOK<F>(
function chainIOK (line 142) | function chainIOK<M>(F: FromIO<M>, M: Chain<M>): <A, B>(f: (a: A) => IO<...
function chainFirstIOK (line 180) | function chainFirstIOK<M>(
function tapIO (line 221) | function tapIO<M>(F: FromIO<M>, M: Chain<M>): <A, B>(self: HKT<M, A>, f:...
FILE: src/FromReader.ts
type FromReader (line 21) | interface FromReader<F> {
type FromReader2 (line 30) | interface FromReader2<F extends URIS2> {
type FromReader3 (line 39) | interface FromReader3<F extends URIS3> {
type FromReader3C (line 48) | interface FromReader3C<F extends URIS3, E> {
type FromReader4 (line 58) | interface FromReader4<F extends URIS4> {
function ask (line 76) | function ask<F>(F: FromReader<F>): <R>() => HKT2<F, R, R> {
function asks (line 89) | function asks<F>(F: FromReader<F>): <R, A>(f: (r: R) => A) => HKT2<F, R,...
function fromReaderK (line 115) | function fromReaderK<F>(
function chainReaderK (line 144) | function chainReaderK<M extends URIS2>(
function chainFirstReaderK (line 175) | function chainFirstReaderK<M extends URIS2>(
function tapReader (line 208) | function tapReader<M extends URIS2>(
FILE: src/FromState.ts
type FromState (line 22) | interface FromState<F> {
type FromState2 (line 31) | interface FromState2<F extends URIS2> {
type FromState3 (line 40) | interface FromState3<F extends URIS3> {
type FromState3C (line 49) | interface FromState3C<F extends URIS3, E> {
type FromState4 (line 59) | interface FromState4<F extends URIS4> {
function get (line 77) | function get<F>(F: FromState<F>): <S>() => HKT2<F, S, S> {
function put (line 90) | function put<F>(F: FromState<F>): <S>(s: S) => HKT2<F, S, void> {
function modify (line 103) | function modify<F>(F: FromState<F>): <S>(f: Endomorphism<S>) => HKT2<F, ...
function gets (line 116) | function gets<F>(F: FromState<F>): <S, A>(f: (s: S) => A) => HKT2<F, S, ...
function fromStateK (line 142) | function fromStateK<F>(
function chainStateK (line 167) | function chainStateK<M extends URIS2>(
FILE: src/FromTask.ts
type FromTask (line 20) | interface FromTask<F> extends FromIO<F> {
type FromTask1 (line 28) | interface FromTask1<F extends URIS> extends FromIO1<F> {
type FromTask2 (line 36) | interface FromTask2<F extends URIS2> extends FromIO2<F> {
type FromTask2C (line 44) | interface FromTask2C<F extends URIS2, E> extends FromIO2C<F, E> {
type FromTask3 (line 52) | interface FromTask3<F extends URIS3> extends FromIO3<F> {
type FromTask3C (line 60) | interface FromTask3C<F extends URIS3, E> extends FromIO3C<F, E> {
type FromTask4 (line 68) | interface FromTask4<F extends URIS4> extends FromIO4<F> {
function fromTaskK (line 100) | function fromTaskK<F>(
function chainTaskK (line 137) | function chainTaskK<M>(
function chainFirstTaskK (line 178) | function chainFirstTaskK<M>(
function tapTask (line 219) | function tapTask<M>(F: FromTask<M>, M: Chain<M>): <A, B>(self: HKT<M, A>...
FILE: src/FromThese.ts
type FromThese (line 18) | interface FromThese<F> {
type FromThese2 (line 27) | interface FromThese2<F extends URIS2> {
type FromThese2C (line 36) | interface FromThese2C<F extends URIS2, E> {
type FromThese3 (line 46) | interface FromThese3<F extends URIS3> {
type FromThese3C (line 55) | interface FromThese3C<F extends URIS3, E> {
type FromThese4 (line 65) | interface FromThese4<F extends URIS4> {
function fromTheseK (line 95) | function fromTheseK<F>(
FILE: src/Functor.ts
type Functor (line 25) | interface Functor<F> {
type Functor1 (line 34) | interface Functor1<F extends URIS> {
type Functor2 (line 43) | interface Functor2<F extends URIS2> {
type Functor2C (line 52) | interface Functor2C<F extends URIS2, E> {
type Functor3 (line 62) | interface Functor3<F extends URIS3> {
type Functor3C (line 71) | interface Functor3C<F extends URIS3, E> {
type Functor4 (line 81) | interface Functor4<F extends URIS4> {
function map (line 131) | function map<F, G>(
function flap (line 153) | function flap<F>(F: Functor<F>): <A>(a: A) => <B>(fab: HKT<F, (a: A) => ...
function bindTo (line 185) | function bindTo<F>(
function let_ (line 238) | function let_<F>(
type FunctorComposition (line 263) | interface FunctorComposition<F, G> {
type FunctorCompositionHKT1 (line 272) | interface FunctorCompositionHKT1<F, G extends URIS> {
type FunctorCompositionHKT2 (line 281) | interface FunctorCompositionHKT2<F, G extends URIS2> {
type FunctorCompositionHKT2C (line 290) | interface FunctorCompositionHKT2C<F, G extends URIS2, E> {
type FunctorComposition11 (line 299) | interface FunctorComposition11<F extends URIS, G extends URIS> {
type FunctorComposition12 (line 308) | interface FunctorComposition12<F extends URIS, G extends URIS2> {
type FunctorComposition12C (line 317) | interface FunctorComposition12C<F extends URIS, G extends URIS2, E> {
type FunctorComposition21 (line 326) | interface FunctorComposition21<F extends URIS2, G extends URIS> {
type FunctorComposition2C1 (line 335) | interface FunctorComposition2C1<F extends URIS2, G extends URIS, E> {
type FunctorComposition22 (line 344) | interface FunctorComposition22<F extends URIS2, G extends URIS2> {
type FunctorComposition22C (line 353) | interface FunctorComposition22C<F extends URIS2, G extends URIS2, E> {
type FunctorComposition23 (line 362) | interface FunctorComposition23<F extends URIS2, G extends URIS3> {
type FunctorComposition23C (line 371) | interface FunctorComposition23C<F extends URIS2, G extends URIS3, E> {
function getFunctorComposition (line 424) | function getFunctorComposition<F, G>(F: Functor<F>, G: Functor<G>): Func...
function as (line 444) | function as<F>(F: Functor<F>): <A, _>(self: HKT<F, _>, b: A) => HKT<F, A> {
function asUnit (line 461) | function asUnit<F>(F: Functor<F>): <_>(self: HKT<F, _>) => HKT<F, void> {
FILE: src/FunctorWithIndex.ts
type FunctorWithIndex (line 43) | interface FunctorWithIndex<F, I> extends Functor<F> {
type FunctorWithIndex1 (line 51) | interface FunctorWithIndex1<F extends URIS, I> extends Functor1<F> {
type FunctorWithIndex2 (line 59) | interface FunctorWithIndex2<F extends URIS2, I> extends Functor2<F> {
type FunctorWithIndex2C (line 67) | interface FunctorWithIndex2C<F extends URIS2, I, E> extends Functor2C<F,...
type FunctorWithIndex3 (line 75) | interface FunctorWithIndex3<F extends URIS3, I> extends Functor3<F> {
type FunctorWithIndex3C (line 83) | interface FunctorWithIndex3C<F extends URIS3, I, E> extends Functor3C<F,...
type FunctorWithIndex4 (line 91) | interface FunctorWithIndex4<F extends URIS4, I> extends Functor4<F> {
function mapWithIndex (line 112) | function mapWithIndex<F, I, G, J>(
type FunctorWithIndexComposition (line 128) | interface FunctorWithIndexComposition<F, FI, G, GI> extends FunctorCompo...
type FunctorWithIndexComposition11 (line 137) | interface FunctorWithIndexComposition11<F extends URIS, FI, G extends UR...
type FunctorWithIndexComposition12 (line 147) | interface FunctorWithIndexComposition12<F extends URIS, FI, G extends UR...
type FunctorWithIndexComposition12C (line 157) | interface FunctorWithIndexComposition12C<F extends URIS, FI, G extends U...
type FunctorWithIndexComposition21 (line 167) | interface FunctorWithIndexComposition21<F extends URIS2, FI, G extends U...
type FunctorWithIndexComposition2C1 (line 177) | interface FunctorWithIndexComposition2C1<F extends URIS2, FI, G extends ...
type FunctorWithIndexComposition22 (line 187) | interface FunctorWithIndexComposition22<F extends URIS2, FI, G extends U...
type FunctorWithIndexComposition22C (line 200) | interface FunctorWithIndexComposition22C<F extends URIS2, FI, G extends ...
function getFunctorWithIndexComposition (line 255) | function getFunctorWithIndexComposition<F, FI, G, GI>(
FILE: src/Group.ts
type Group (line 18) | interface Group<A> extends Monoid<A> {
FILE: src/HKT.ts
type HKT (line 11) | interface HKT<URI, A> {
type HKT2 (line 20) | interface HKT2<URI, E, A> extends HKT<URI, A> {
type HKT3 (line 28) | interface HKT3<URI, R, E, A> extends HKT2<URI, E, A> {
type HKT4 (line 36) | interface HKT4<URI, S, R, E, A> extends HKT3<URI, R, E, A> {
type URItoKind (line 49) | interface URItoKind<A> {}
type URItoKind2 (line 56) | interface URItoKind2<E, A> {}
type URItoKind3 (line 63) | interface URItoKind3<R, E, A> {}
type URItoKind4 (line 70) | interface URItoKind4<S, R, E, A> {}
type URIS (line 80) | type URIS = keyof URItoKind<any>
type URIS2 (line 86) | type URIS2 = keyof URItoKind2<any, any>
type URIS3 (line 92) | type URIS3 = keyof URItoKind3<any, any, any>
type URIS4 (line 98) | type URIS4 = keyof URItoKind4<any, any, any, any>
type Kind (line 108) | type Kind<URI extends URIS, A> = URI extends URIS ? URItoKind<A>[URI] : any
type Kind2 (line 114) | type Kind2<URI extends URIS2, E, A> = URI extends URIS2 ? URItoKind2<E, ...
type Kind3 (line 120) | type Kind3<URI extends URIS3, R, E, A> = URI extends URIS3 ? URItoKind3<...
type Kind4 (line 126) | type Kind4<URI extends URIS4, S, R, E, A> = URI extends URIS4 ? URItoKin...
FILE: src/HeytingAlgebra.ts
type HeytingAlgebra (line 34) | interface HeytingAlgebra<A> extends BoundedDistributiveLattice<A> {
FILE: src/IO.ts
type IO (line 40) | interface IO<A> {
constant URI (line 98) | const URI = 'IO'
type URI (line 104) | type URI = typeof URI
type URItoKind (line 107) | interface URItoKind<A> {
FILE: src/IOEither.ts
type IOEither (line 70) | interface IOEither<E, A> extends IO<Either<E, A>> {}
constant URI (line 428) | const URI = 'IOEither'
type URI (line 434) | type URI = typeof URI
type URItoKind2 (line 437) | interface URItoKind2<E, A> {
function getApplicativeIOValidation (line 451) | function getApplicativeIOValidation<E>(S: Semigroup<E>): Applicative2C<U...
function getAltIOValidation (line 471) | function getAltIOValidation<E>(S: Semigroup<E>): Alt2C<URI, E> {
function getFilterable (line 499) | function getFilterable<E>(M: Monoid<E>): Filterable2C<URI, E> {
type IOEitherTypeLambda (line 846) | interface IOEitherTypeLambda extends _.TypeLambda {
function getIOValidation (line 1376) | function getIOValidation<E>(
FILE: src/IOOption.ts
type IOOption (line 52) | interface IOOption<A> extends IO<Option<A>> {}
constant URI (line 347) | const URI = 'IOOption'
type URI (line 353) | type URI = typeof URI
type URItoKind (line 356) | interface URItoKind<A> {
type IOOptionTypeLambda (line 632) | interface IOOptionTypeLambda extends _.TypeLambda {
FILE: src/IORef.ts
class IORef (line 18) | class IORef<A> {
method constructor (line 23) | constructor(private value: A) {
method write (line 31) | write(a: A): IO<void> {
method modify (line 39) | modify(f: (a: A) => A): IO<void> {
function newIORef (line 50) | function newIORef<A>(a: A): IO<IORef<A>> {
FILE: src/Identity.ts
type Identity (line 31) | type Identity<A> = A
constant URI (line 166) | const URI = 'Identity'
type URI (line 172) | type URI = typeof URI
type URItoKind (line 175) | interface URItoKind<A> {
FILE: src/Invariant.ts
type Invariant (line 14) | interface Invariant<F> {
type Invariant1 (line 23) | interface Invariant1<F extends URIS> {
type Invariant2 (line 32) | interface Invariant2<F extends URIS2> {
type Invariant2C (line 41) | interface Invariant2C<F extends URIS2, E> {
type Invariant3 (line 51) | interface Invariant3<F extends URIS3> {
type Invariant3C (line 60) | interface Invariant3C<F extends URIS3, E> {
type Invariant4 (line 70) | interface Invariant4<F extends URIS4> {
FILE: src/JoinSemilattice.ts
type JoinSemilattice (line 22) | interface JoinSemilattice<A> {
FILE: src/Json.ts
type Json (line 10) | type Json = boolean | number | string | null | JsonArray | JsonRecord
type JsonRecord (line 15) | interface JsonRecord {
type JsonArray (line 22) | interface JsonArray extends ReadonlyArray<Json> {}
FILE: src/Lattice.ts
type Lattice (line 20) | interface Lattice<A> extends JoinSemilattice<A>, MeetSemilattice<A> {}
FILE: src/Magma.ts
type Magma (line 20) | interface Magma<A> {
FILE: src/Map.ts
function collect (line 97) | function collect<K>(O: Ord<K>): <A, B>(f: (k: K, a: A) => B) => (m: Map<...
function toArray (line 115) | function toArray<K>(O: Ord<K>): <A>(m: Map<K, A>) => Array<[K, A]> {
function toUnfoldable (line 126) | function toUnfoldable<K, F>(ord: Ord<K>, U: Unfoldable<F>): <A>(d: Map<K...
function pop (line 207) | function pop<K>(E: Eq<K>): (k: K) => <A>(m: Map<K, A>) => Option<[A, Map...
type Next (line 220) | type Next<A> = IteratorResult<A, undefined>
function lookupWithKey (line 233) | function lookupWithKey<K>(
function getMonoid (line 290) | function getMonoid<K, A>(SK: Eq<K>, SA: Semigroup<A>): Monoid<Map<K, A>> {
function fromFoldable (line 348) | function fromFoldable<F, K, A>(E: Eq<K>, M: Magma<A>, F: Foldable<F>): (...
function partitionWithIndex (line 408) | function partitionWithIndex<K, A>(
function filterWithIndex (line 453) | function filterWithIndex<K, A>(p: (k: K, a: A) => boolean): (m: Map<K, A...
constant URI (line 579) | const URI = 'Map'
type URI (line 585) | type URI = typeof URI
type URItoKind2 (line 588) | interface URItoKind2<E, A> {
function getFilterableWithIndex (line 641) | function getFilterableWithIndex<K = never>(): FilterableWithIndex2C<URI,...
function getWitherable (line 664) | function getWitherable<K>(O: Ord<K>): Witherable2C<URI, K> & Traversable...
FILE: src/MeetSemilattice.ts
type MeetSemilattice (line 22) | interface MeetSemilattice<A> {
FILE: src/Monad.ts
type Monad (line 36) | interface Monad<F> extends Applicative<F>, Chain<F> {}
type Monad1 (line 42) | interface Monad1<F extends URIS> extends Applicative1<F>, Chain1<F> {}
type Monad2 (line 48) | interface Monad2<M extends URIS2> extends Applicative2<M>, Chain2<M> {}
type Monad2C (line 54) | interface Monad2C<M extends URIS2, L> extends Applicative2C<M, L>, Chain...
type Monad3 (line 60) | interface Monad3<M extends URIS3> extends Applicative3<M>, Chain3<M> {}
type Monad3C (line 66) | interface Monad3C<M extends URIS3, E> extends Applicative3C<M, E>, Chain...
type Monad4 (line 72) | interface Monad4<M extends URIS4> extends Applicative4<M>, Chain4<M> {}
FILE: src/MonadIO.ts
type MonadIO (line 18) | interface MonadIO<M> extends Monad<M>, FromIO<M> {}
type MonadIO1 (line 24) | interface MonadIO1<M extends URIS> extends Monad1<M>, FromIO1<M> {}
type MonadIO2 (line 30) | interface MonadIO2<M extends URIS2> extends Monad2<M>, FromIO2<M> {}
type MonadIO2C (line 36) | interface MonadIO2C<M extends URIS2, E> extends Monad2C<M, E>, FromIO2C<...
type MonadIO3 (line 42) | interface MonadIO3<M extends URIS3> extends Monad3<M>, FromIO3<M> {}
type MonadIO3C (line 48) | interface MonadIO3C<M extends URIS3, E> extends Monad3C<M, E>, FromIO3C<...
type MonadIO4 (line 54) | interface MonadIO4<M extends URIS4> extends Monad4<M>, FromIO4<M> {}
FILE: src/MonadTask.ts
type MonadTask (line 18) | interface MonadTask<M> extends MonadIO<M>, FromTask<M> {}
type MonadTask1 (line 24) | interface MonadTask1<M extends URIS> extends MonadIO1<M>, FromTask1<M> {}
type MonadTask2 (line 30) | interface MonadTask2<M extends URIS2> extends MonadIO2<M>, FromTask2<M> {}
type MonadTask2C (line 36) | interface MonadTask2C<M extends URIS2, E> extends MonadIO2C<M, E>, FromT...
type MonadTask3 (line 42) | interface MonadTask3<M extends URIS3> extends MonadIO3<M>, FromTask3<M> {}
type MonadTask3C (line 48) | interface MonadTask3C<M extends URIS3, E> extends MonadIO3C<M, E>, FromT...
type MonadTask4 (line 54) | interface MonadTask4<M extends URIS4> extends MonadIO4<M>, FromTask4<M> {}
FILE: src/MonadThrow.ts
type MonadThrow (line 22) | interface MonadThrow<M> extends Monad<M> {
type MonadThrow1 (line 30) | interface MonadThrow1<M extends URIS> extends Monad1<M> {
type MonadThrow2 (line 38) | interface MonadThrow2<M extends URIS2> extends Monad2<M> {
type MonadThrow2C (line 46) | interface MonadThrow2C<M extends URIS2, E> extends Monad2C<M, E> {
type MonadThrow3 (line 54) | interface MonadThrow3<M extends URIS3> extends Monad3<M> {
type MonadThrow3C (line 62) | interface MonadThrow3C<M extends URIS3, E> extends Monad3C<M, E> {
type MonadThrow4 (line 70) | interface MonadThrow4<M extends URIS4> extends Monad4<M> {
FILE: src/Monoid.ts
type Monoid (line 50) | interface Monoid<A> extends Se.Semigroup<A> {
FILE: src/NaturalTransformation.ts
type NaturalTransformation (line 17) | interface NaturalTransformation<F, G> {
type NaturalTransformation11 (line 24) | interface NaturalTransformation11<F extends URIS, G extends URIS> {
type NaturalTransformation12 (line 31) | interface NaturalTransformation12<F extends URIS, G extends URIS2> {
type NaturalTransformation12C (line 38) | interface NaturalTransformation12C<F extends URIS, G extends URIS2, E> {
type NaturalTransformation13 (line 45) | interface NaturalTransformation13<F extends URIS, G extends URIS3> {
type NaturalTransformation13C (line 52) | interface NaturalTransformation13C<F extends URIS, G extends URIS3, E> {
type NaturalTransformation14 (line 59) | interface NaturalTransformation14<F extends URIS, G extends URIS4> {
type NaturalTransformation14C (line 66) | interface NaturalTransformation14C<F extends URIS, G extends URIS4, E> {
type NaturalTransformation21 (line 73) | interface NaturalTransformation21<F extends URIS2, G extends URIS> {
type NaturalTransformation22 (line 80) | interface NaturalTransformation22<F extends URIS2, G extends URIS2> {
type NaturalTransformation22C (line 87) | interface NaturalTransformation22C<F extends URIS2, G extends URIS2, E> {
type NaturalTransformation23 (line 94) | interface NaturalTransformation23<F extends URIS2, G extends URIS3> {
type NaturalTransformation23C (line 101) | interface NaturalTransformation23C<F extends URIS2, G extends URIS3, E> {
type NaturalTransformation24 (line 108) | interface NaturalTransformation24<F extends URIS2, G extends URIS4> {
type NaturalTransformation23R (line 115) | interface NaturalTransformation23R<F extends URIS2, G extends URIS3> {
type NaturalTransformation23RC (line 122) | interface NaturalTransformation23RC<F extends URIS2, G extends URIS3, E> {
type NaturalTransformation24R (line 129) | interface NaturalTransformation24R<F extends URIS2, G extends URIS4> {
type NaturalTransformation24S (line 136) | interface NaturalTransformation24S<F extends URIS2, G extends URIS4> {
type NaturalTransformation33 (line 143) | interface NaturalTransformation33<F extends URIS3, G extends URIS3> {
type NaturalTransformation34 (line 150) | interface NaturalTransformation34<F extends URIS3, G extends URIS4> {
FILE: src/NonEmptyArray.ts
type NonEmptyArray (line 53) | interface NonEmptyArray<A> extends Array<A> {
function concatW (line 334) | function concatW<B>(second: Array<B>): <A>(first: NonEmptyArray<A>) => A...
function concat (line 347) | function concat<A>(x: Array<A>, y?: Array<A>): Array<A> | ((y: NonEmptyA...
function group (line 375) | function group<A>(E: Eq<A>): (as: Array<A>) => Array<NonEmptyArray<A>> {
function zip (line 490) | function zip<A, B>(
constant URI (line 864) | const URI = 'NonEmptyArray'
type URI (line 870) | type URI = typeof URI
type URItoKind (line 873) | interface URItoKind<A> {
function groupSort (line 1283) | function groupSort<A>(O: Ord<A>): (as: Array<A>) => Array<NonEmptyArray<...
function filter (line 1299) | function filter<A>(predicate: Predicate<A>): (as: NonEmptyArray<A>) => O...
function cons (line 1343) | function cons<A>(head: A, tail?: Array<A>): NonEmptyArray<A> | ((tail: A...
FILE: src/Option.ts
type None (line 114) | interface None {
type Some (line 122) | interface Some<A> {
type Option (line 131) | type Option<A> = None | Some<A>
function fromPredicate (line 170) | function fromPredicate<A>(predicate: Predicate<A>): (a: A) => Option<A> {
constant URI (line 235) | const URI = 'Option'
type URI (line 241) | type URI = typeof URI
type URItoKind (line 244) | interface URItoKind<A> {
function elem (line 1197) | function elem<A>(E: Eq<A>): (a: A, ma?: Option<A>) => boolean | ((ma: Op...
function getRefinement (line 1386) | function getRefinement<A, B extends A>(getOption: (a: A) => Option<B>): ...
FILE: src/OptionT.ts
function some (line 38) | function some<F>(F: Pointed<F>): <A>(a: A) => HKT<F, Option<A>> {
function zero (line 52) | function zero<F>(F: Pointed<F>): <A>() => HKT<F, Option<A>> {
function fromF (line 70) | function fromF<F>(F: Functor<F>): <A>(ma: HKT<F, A>) => HKT<F, Option<A>> {
function fromNullable (line 88) | function fromNullable<F>(F: Pointed<F>): <A>(a: A) => HKT<F, Option<NonN...
function fromNullableK (line 130) | function fromNullableK<F>(
function chainNullableK (line 169) | function chainNullableK<M>(
function fromOptionK (line 203) | function fromOptionK<F>(
function chainOptionK (line 233) | function chainOptionK<M>(
function fromPredicate (line 292) | function fromPredicate<F>(F: Pointed<F>): {
function fromEither (line 319) | function fromEither<F>(F: Pointed<F>): <A>(e: Either<unknown, A>) => HKT...
function match (line 348) | function match<F>(
function matchE (line 393) | function matchE<M>(
function getOrElse (line 421) | function getOrElse<M>(M: Monad<M>): <A>(onNone: LazyArg<HKT<M, A>>) => (...
function map (line 447) | function map<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => (fa: HKT<F, Op...
function ap (line 479) | function ap<F>(
function chain (line 511) | function chain<M>(
function flatMap (line 527) | function flatMap<M>(
function alt (line 566) | function alt<M>(
type OptionT (line 582) | interface OptionT<M, A> extends HKT<M, Option<A>> {}
type OptionM (line 589) | interface OptionM<M> extends ApplicativeCompositionHKT1<M, O.URI> {
type OptionT1 (line 603) | type OptionT1<M extends URIS, A> = Kind<M, Option<A>>
type OptionM1 (line 610) | interface OptionM1<M extends URIS> extends ApplicativeComposition11<M, O...
type OptionT2 (line 624) | type OptionT2<M extends URIS2, E, A> = Kind2<M, E, Option<A>>
type OptionM2 (line 631) | interface OptionM2<M extends URIS2> extends ApplicativeComposition21<M, ...
type OptionM2C (line 649) | interface OptionM2C<M extends URIS2, E> extends ApplicativeComposition2C...
function getOptionM (line 675) | function getOptionM<M>(M: Monad<M>): OptionM<M> {
FILE: src/Ord.ts
type Ord (line 27) | interface Ord<A> extends Eq<A> {
constant URI (line 147) | const URI = 'Ord'
type URI (line 153) | type URI = typeof URI
type URItoKind (line 156) | interface URItoKind<A> {
function compare (line 443) | function compare(first: any, second: any): Ordering {
FILE: src/Ordering.ts
type Ordering (line 16) | type Ordering = -1 | 0 | 1
FILE: src/Pointed.ts
type Pointed (line 14) | interface Pointed<F> {
type Pointed1 (line 23) | interface Pointed1<F extends URIS> {
type Pointed2 (line 32) | interface Pointed2<F extends URIS2> {
type Pointed2C (line 41) | interface Pointed2C<F extends URIS2, E> {
type Pointed3 (line 51) | interface Pointed3<F extends URIS3> {
type Pointed3C (line 60) | interface Pointed3C<F extends URIS3, E> {
type Pointed4 (line 70) | interface Pointed4<F extends URIS4> {
FILE: src/Predicate.ts
type Predicate (line 16) | interface Predicate<A> {
constant URI (line 34) | const URI = 'Predicate'
type URI (line 40) | type URI = typeof URI
type URItoKind (line 43) | interface URItoKind<A> {
FILE: src/Profunctor.ts
type Profunctor (line 15) | interface Profunctor<F> {
type Profunctor2 (line 25) | interface Profunctor2<F extends URIS2> extends Functor2<F> {
type Profunctor2C (line 33) | interface Profunctor2C<F extends URIS2, E> extends Functor2C<F, E> {
type Profunctor3 (line 41) | interface Profunctor3<F extends URIS3> extends Functor3<F> {
type Profunctor3C (line 49) | interface Profunctor3C<F extends URIS3, E> extends Functor3C<F, E> {
type Profunctor4 (line 57) | interface Profunctor4<F extends URIS4> extends Functor4<F> {
FILE: src/Random.ts
function randomInt (line 23) | function randomInt(low: number, high: number): IO<number> {
function randomRange (line 36) | function randomRange(min: number, max: number): IO<number> {
FILE: src/Reader.ts
type Reader (line 67) | interface Reader<R, A> {
constant URI (line 266) | const URI = 'Reader'
type URI (line 272) | type URI = typeof URI
type URItoKind2 (line 275) | interface URItoKind2<E, A> {
FILE: src/ReaderEither.ts
type ReaderEither (line 68) | interface ReaderEither<R, E, A> extends Reader<R, Either<E, A>> {}
constant URI (line 460) | const URI = 'ReaderEither'
type URI (line 466) | type URI = typeof URI
type URItoKind3 (line 469) | interface URItoKind3<R, E, A> {
function getFilterable (line 492) | function getFilterable<E>(M: Monoid<E>): Filterable3C<URI, E> {
function getApplicativeReaderValidation (line 522) | function getApplicativeReaderValidation<E>(S: Semigroup<E>): Applicative...
function getAltReaderValidation (line 542) | function getAltReaderValidation<E>(S: Semigroup<E>): Alt3C<URI, E> {
type ReaderEitherTypeLambda (line 875) | interface ReaderEitherTypeLambda extends _.TypeLambda {
function getReaderValidation (line 1335) | function getReaderValidation<E>(
FILE: src/ReaderIO.ts
type ReaderIO (line 33) | interface ReaderIO<R, A> {
constant URI (line 147) | const URI = 'ReaderIO'
type URI (line 153) | type URI = typeof URI
type URItoKind2 (line 156) | interface URItoKind2<E, A> {
type ReaderIOTypeLambda (line 294) | interface ReaderIOTypeLambda extends _.TypeLambda {
FILE: src/ReaderT.ts
function of (line 35) | function of<F>(F: Pointed<F>): <A, R>(a: A) => Reader<R, HKT<F, A>> {
function map (line 61) | function map<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => <R>(fa: Reader...
function ap (line 99) | function ap<F>(
function chain (line 137) | function chain<M>(
function flatMap (line 153) | function flatMap<M>(
function fromReader (line 177) | function fromReader<F>(F: Pointed<F>): <R, A>(ma: Reader<R, A>) => Reade...
function fromNaturalTransformation (line 203) | function fromNaturalTransformation<F, G>(
type ReaderT (line 218) | interface ReaderT<M, R, A> {
type ReaderM (line 227) | interface ReaderM<M> {
type ReaderT1 (line 244) | interface ReaderT1<M extends URIS, R, A> {
type ReaderM1 (line 253) | interface ReaderM1<M extends URIS> {
type ReaderT2 (line 270) | interface ReaderT2<M extends URIS2, R, E, A> {
type ReaderM2 (line 279) | interface ReaderM2<M extends URIS2> {
type ReaderM2C (line 296) | interface ReaderM2C<M extends URIS2, E> {
type ReaderT3 (line 313) | interface ReaderT3<M extends URIS3, R, U, E, A> {
type ReaderM3 (line 322) | interface ReaderM3<M extends URIS3> {
function getReaderM (line 356) | function getReaderM<M>(M: Monad<M>): ReaderM<M> {
FILE: src/ReaderTask.ts
type ReaderTask (line 49) | interface ReaderTask<R, A> {
constant URI (line 179) | const URI = 'ReaderTask'
type URI (line 185) | type URI = typeof URI
type URItoKind2 (line 188) | interface URItoKind2<E, A> {
type ReaderTaskTypeLambda (line 401) | interface ReaderTaskTypeLambda extends _.TypeLambda {
function run (line 1021) | function run<R, A>(ma: ReaderTask<R, A>, r: R): Promise<A> {
FILE: src/ReaderTaskEither.ts
type ReaderTaskEither (line 84) | interface ReaderTaskEither<R, E, A> {
constant URI (line 648) | const URI = 'ReaderTaskEither'
type URI (line 654) | type URI = typeof URI
type URItoKind3 (line 657) | interface URItoKind3<R, E, A> {
function getFilterable (line 680) | function getFilterable<E>(M: Monoid<E>): Filterable3C<URI, E> {
function getApplicativeReaderTaskValidation (line 710) | function getApplicativeReaderTaskValidation<E>(A: Apply1<T.URI>, S: Semi...
function getAltReaderTaskValidation (line 730) | function getAltReaderTaskValidation<E>(S: Semigroup<E>): Alt3C<URI, E> {
type ReaderTaskEitherTypeLambda (line 1393) | interface ReaderTaskEitherTypeLambda extends _.TypeLambda {
function bracket (line 1896) | function bracket<R, E, A, B>(
function bracketW (line 1909) | function bracketW<R1, E1, A, R2, E2, B, R3, E3>(
function getReaderTaskValidation (line 2262) | function getReaderTaskValidation<E>(
function run (line 2289) | function run<R, E, A>(ma: ReaderTaskEither<R, E, A>, r: R): Promise<Eith...
FILE: src/ReadonlyArray.ts
function fromPredicate (line 160) | function fromPredicate<A>(predicate: Predicate<A>): (a: A) => ReadonlyAr...
function lookup (line 374) | function lookup<A>(i: number, as?: ReadonlyArray<A>): Option<A> | (<A>(a...
function takeLeftWhile (line 495) | function takeLeftWhile<A>(predicate: Predicate<A>): (as: ReadonlyArray<A...
type Spanned (line 512) | interface Spanned<I, R> {
function spanLeft (line 543) | function spanLeft<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) =>...
function dropLeftWhile (line 605) | function dropLeftWhile<A>(predicate: Predicate<A>): (as: ReadonlyArray<A...
function findFirst (line 654) | function findFirst<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) =...
function findLast (line 715) | function findLast<A>(predicate: Predicate<A>): (as: ReadonlyArray<A>) =>...
function zip (line 965) | function zip<A, B>(
function elem (line 1060) | function elem<A>(E: Eq<A>): (a: A, as?: ReadonlyArray<A>) => boolean | (...
function comprehension (line 1243) | function comprehension<A, R>(
function union (line 1287) | function union<A>(
function intersection (line 1318) | function intersection<A>(
function difference (line 1349) | function difference<A>(
constant URI (line 1847) | const URI = 'ReadonlyArray'
type URI (line 1853) | type URI = typeof URI
type URItoKind (line 1856) | interface URItoKind<A> {
function go (line 2314) | function go(e: Either<A, B>): void {
function every (line 2478) | function every<A>(predicate: Predicate<A>): Predicate<ReadonlyArray<A>> {
FILE: src/ReadonlyMap.ts
function toMap (line 43) | function toMap<K, A>(m: ReadonlyMap<K, A>): Map<K, A> {
function getShow (line 51) | function getShow<K, A>(SK: Show<K>, SA: Show<A>): Show<ReadonlyMap<K, A>> {
function member (line 87) | function member<K>(E: Eq<K>): <A>(k: K, m?: ReadonlyMap<K, A>) => boolea...
type Next (line 98) | type Next<A> = IteratorResult<A, undefined>
function elem (line 110) | function elem<A>(E: Eq<A>): <K>(a: A, m?: ReadonlyMap<K, A>) => boolean ...
function collect (line 151) | function collect<K>(O: Ord<K>): <A, B>(f: (k: K, a: A) => B) => (m: Read...
function toUnfoldable (line 184) | function toUnfoldable<K, F>(
function pop (line 275) | function pop<K>(E: Eq<K>): (k: K) => <A>(m: ReadonlyMap<K, A>) => Option...
function lookupWithKey (line 299) | function lookupWithKey<K>(
function lookup (line 329) | function lookup<K>(
function isSubmap (line 358) | function isSubmap<K, A>(
function getEq (line 392) | function getEq<K, A>(SK: Eq<K>, SA: Eq<A>): Eq<ReadonlyMap<K, A>> {
function getMonoid (line 403) | function getMonoid<K, A>(SK: Eq<K>, SA: Semigroup<A>): Monoid<ReadonlyMa...
function fromFoldable (line 466) | function fromFoldable<F, K, A>(
function partitionWithIndex (line 530) | function partitionWithIndex<K, A>(
function filterWithIndex (line 581) | function filterWithIndex<K, A>(
constant URI (line 718) | const URI = 'ReadonlyMap'
type URI (line 724) | type URI = typeof URI
type URItoKind2 (line 727) | interface URItoKind2<E, A> {
function getFilterableWithIndex (line 780) | function getFilterableWithIndex<K = never>(): FilterableWithIndex2C<URI,...
function getWitherable (line 1054) | function getWitherable<K>(O: Ord<K>): Witherable2C<URI, K> & Traversable...
FILE: src/ReadonlyNonEmptyArray.ts
type ReadonlyNonEmptyArray (line 53) | type ReadonlyNonEmptyArray<A> = ReadonlyArray<A> & {
function concatW (line 351) | function concatW<B>(second: ReadonlyArray<B>): <A>(first: ReadonlyNonEmp...
function concat (line 364) | function concat<A>(
function group (line 396) | function group<A>(E: Eq<A>): (as: ReadonlyArray<A>) => ReadonlyArray<Rea...
function zip (line 497) | function zip<A, B>(
constant URI (line 908) | const URI = 'ReadonlyNonEmptyArray'
type URI (line 914) | type URI = typeof URI
type URItoKind (line 917) | interface URItoKind<A> {
function groupSort (line 1354) | function groupSort<A>(O: Ord<A>): (as: ReadonlyArray<A>) => ReadonlyArra...
function filter (line 1374) | function filter<A>(predicate: Predicate<A>): (as: ReadonlyNonEmptyArray<...
function cons (line 1418) | function cons<A>(
FILE: src/ReadonlyRecord.ts
type ReadonlyRecord (line 55) | type ReadonlyRecord<K extends string, T> = Readonly<Record<K, T>>
function collect (line 152) | function collect<A, B>(
function toUnfoldable (line 214) | function toUnfoldable<F>(U: Unfoldable<F>): <A>(r: ReadonlyRecord<string...
function deleteAt (line 273) | function deleteAt(k: string): <A>(r: ReadonlyRecord<string, A>) => Reado...
function pop (line 363) | function pop(k: string): <A>(r: ReadonlyRecord<string, A>) => Option<rea...
function isSubrecord (line 403) | function isSubrecord<A>(
function lookup (line 441) | function lookup<A>(
function mapWithIndex (line 470) | function mapWithIndex<A, B>(
function map (line 496) | function map<A, B>(f: (a: A) => B): (fa: ReadonlyRecord<string, A>) => R...
function reduceWithIndex (line 530) | function reduceWithIndex<A, B>(
function foldMapWithIndex (line 579) | function foldMapWithIndex<M>(
function reduceRightWithIndex (line 632) | function reduceRightWithIndex<A, B>(
function traverseWithIndex (line 702) | function traverseWithIndex<F>(
function traverse (line 743) | function traverse<F>(
function sequence (line 795) | function sequence<F>(
function partitionMapWithIndex (line 850) | function partitionMapWithIndex<A, B, C>(
function partitionWithIndex (line 904) | function partitionWithIndex<A>(
function filterMapWithIndex (line 943) | function filterMapWithIndex<A, B>(
function filterWithIndex (line 985) | function filterWithIndex<A>(
function fromFoldable (line 1027) | function fromFoldable<F, A>(
function fromFoldableMap (line 1086) | function fromFoldableMap<F, B>(
function every (line 1146) | function every<A>(predicate: Predicate<A>): Predicate<ReadonlyRecord<str...
function some (line 1168) | function some<A>(predicate: (a: A) => boolean): (r: ReadonlyRecord<strin...
function elem (line 1197) | function elem<A>(
function reduce (line 1592) | function reduce<A, B>(
function foldMap (line 1629) | function foldMap<M>(
function reduceRight (line 1670) | function reduceRight<A, B>(
constant URI (line 1754) | const URI = 'ReadonlyRecord'
type URI (line 1760) | type URI = typeof URI
type URItoKind (line 1763) | interface URItoKind<A> {
function getShow (line 1793) | function getShow<A>(
function getEq (line 1824) | function getEq<A>(E: Eq<A>): Eq<ReadonlyRecord<string, A>> {
function getMonoid (line 1846) | function getMonoid<A>(S: Semigroup<A>): Monoid<ReadonlyRecord<string, A>> {
function hasOwnProperty (line 2254) | function hasOwnProperty<K extends string>(this: any, k: string, r?: Read...
FILE: src/ReadonlySet.ts
function toSet (line 60) | function toSet<A>(s: ReadonlySet<A>): Set<A> {
type Next (line 64) | type Next<A> = IteratorResult<A, undefined>
function map (line 71) | function map<B>(E: Eq<B>): <A>(f: (x: A) => B) => (set: ReadonlySet<A>) ...
function chain (line 88) | function chain<B>(E: Eq<B>): <A>(f: (x: A) => ReadonlySet<B>) => (set: R...
function filter (line 109) | function filter<A>(predicate: Predicate<A>): (set: ReadonlySet<A>) => Re...
function partition (line 136) | function partition<A>(
function union (line 166) | function union<A>(
function intersection (line 201) | function intersection<A>(
function partitionMap (line 226) | function partitionMap<B, C>(
function difference (line 274) | function difference<A>(
function reduce (line 290) | function reduce<A>(O: Ord<A>): <B>(b: B, f: (b: B, a: A) => B) => (fa: R...
function foldMap (line 298) | function foldMap<A, M>(O: Ord<A>, M: Monoid<M>): (f: (a: A) => M) => (fa...
function insert (line 317) | function insert<A>(E: Eq<A>): (a: A) => (set: ReadonlySet<A>) => Readonl...
function separate (line 363) | function separate<E, A>(
function filterMap (line 393) | function filterMap<B>(E: Eq<B>): <A>(f: (a: A) => Option<B>) => (fa: Rea...
function every (line 450) | function every<A>(predicate: Predicate<A>): Predicate<ReadonlySet<A>> {
function isSubset (line 464) | function isSubset<A>(
function elem (line 487) | function elem<A>(E: Eq<A>): (a: A, set?: ReadonlySet<A>) => boolean | ((...
constant URI (line 521) | const URI = 'ReadonlySet'
type URI (line 527) | type URI = typeof URI
type URItoKind (line 530) | interface URItoKind<A> {
function getShow (line 539) | function getShow<A>(S: Show<A>): Show<ReadonlySet<A>> {
function getEq (line 555) | function getEq<A>(E: Eq<A>): Eq<ReadonlySet<A>> {
FILE: src/ReadonlyTuple.ts
function fst (line 29) | function fst<A, E>(ea: readonly [A, E]): A {
function snd (line 36) | function snd<A, E>(ea: readonly [A, E]): E {
function getApply (line 49) | function getApply<S>(S: Semigroup<S>): Apply2C<URI, S> {
function getApplicative (line 68) | function getApplicative<M>(M: Monoid<M>): Applicative2C<URI, M> {
function getChain (line 83) | function getChain<S>(S: Semigroup<S>): Chain2C<URI, S> {
function getMonad (line 101) | function getMonad<M>(M: Monoid<M>): Monad2C<URI, M> {
function getChainRec (line 117) | function getChainRec<M>(M: Monoid<M>): ChainRec2C<URI, M> {
constant URI (line 271) | const URI = 'ReadonlyTuple'
type URI (line 277) | type URI = typeof URI
type URItoKind2 (line 280) | interface URItoKind2<E, A> {
FILE: src/Record.ts
function collect (line 122) | function collect<A, B>(
function toUnfoldable (line 184) | function toUnfoldable<F>(U: Unfoldable<F>): <A>(r: Record<string, A>) =>...
function deleteAt (line 234) | function deleteAt(k: string): <A>(r: Record<string, A>) => Record<string...
function pop (line 307) | function pop(k: string): <A>(r: Record<string, A>) => Option<[A, Record<...
function reduceWithIndex (line 424) | function reduceWithIndex<A, B>(
function foldMapWithIndex (line 458) | function foldMapWithIndex<M>(
function reduceRightWithIndex (line 493) | function reduceRightWithIndex<A, B>(
function traverseWithIndex (line 541) | function traverseWithIndex<F>(
function traverse (line 573) | function traverse<F>(
function sequence (line 622) | function sequence<F>(F: Applicative<F>): <A>(ta: Record<string, HKT<F, A...
function partitionWithIndex (line 707) | function partitionWithIndex<A>(
function filterWithIndex (line 758) | function filterWithIndex<A>(
function fromFoldable (line 783) | function fromFoldable<F, A>(M: Magma<A>, F: FoldableHKT<F>): (fka: HKT<F...
function fromFoldableMap (line 864) | function fromFoldableMap<F, B>(
function reduce (line 1169) | function reduce<A, B>(
function foldMap (line 1200) | function foldMap<M>(
function reduceRight (line 1234) | function reduceRight<A, B>(
constant URI (line 1288) | const URI = 'Record'
type URI (line 1294) | type URI = typeof URI
type URItoKind (line 1297) | interface URItoKind<A> {
function getShow (line 1327) | function getShow<A>(
FILE: src/Refinement.ts
type Refinement (line 15) | interface Refinement<A, B extends A> {
FILE: src/Ring.ts
type Ring (line 23) | interface Ring<A> extends Semiring<A> {
FILE: src/Semigroup.ts
type Semigroup (line 57) | interface Semigroup<A> extends Magma<A> {}
function fold (line 365) | function fold<A>(S: Semigroup<A>): (startWith: A, as?: ReadonlyArray<A>)...
FILE: src/Semigroupoid.ts
type Semigroupoid (line 14) | interface Semigroupoid<F> {
type Semigroupoid2 (line 23) | interface Semigroupoid2<F extends URIS2> {
type Semigroupoid2C (line 32) | interface Semigroupoid2C<F extends URIS2, A> {
type Semigroupoid3 (line 42) | interface Semigroupoid3<F extends URIS3> {
type Semigroupoid3C (line 51) | interface Semigroupoid3C<F extends URIS3, A> {
type Semigroupoid4 (line 61) | interface Semigroupoid4<F extends URIS4> {
FILE: src/Semiring.ts
type Semiring (line 34) | interface Semiring<A> {
FILE: src/Separated.ts
type Separated (line 28) | interface Separated<E, A> {
constant URI (line 85) | const URI = 'Separated'
type URI (line 91) | type URI = typeof URI
type URItoKind2 (line 94) | interface URItoKind2<E, A> {
FILE: src/Set.ts
function map (line 36) | function map<B>(E: Eq<B>): <A>(f: (x: A) => B) => (set: Set<A>) => Set<B> {
function chain (line 55) | function chain<B>(E: Eq<B>): <A>(f: (x: A) => Set<B>) => (set: Set<A>) =...
type Next (line 70) | type Next<A> = IteratorResult<A, undefined>
function filter (line 78) | function filter<A>(predicate: Predicate<A>): (set: Set<A>) => Set<A> {
function partition (line 99) | function partition<A>(predicate: Predicate<A>): (set: Set<A>) => Separat...
function union (line 127) | function union<A>(E: Eq<A>): (me: Set<A>, that?: Set<A>) => Set<A> | ((m...
function intersection (line 160) | function intersection<A>(E: Eq<A>): (me: Set<A>, that?: Set<A>) => Set<A...
function partitionMap (line 183) | function partitionMap<B, C>(
function difference (line 231) | function difference<A>(E: Eq<A>): (me: Set<A>, that?: Set<A>) => Set<A> ...
function insert (line 306) | function insert<A>(E: Eq<A>): (a: A) => (set: Set<A>) => Set<A> {
function separate (line 373) | function separate<E, A>(EE: Eq<E>, EA: Eq<A>): (fa: Set<Either<E, A>>) =...
function filterMap (line 400) | function filterMap<B>(E: Eq<B>): <A>(f: (a: A) => Option<B>) => (fa: Set...
FILE: src/Show.ts
type Show (line 22) | interface Show<A> {
FILE: src/State.ts
type State (line 24) | interface State<S, A> {
constant URI (line 122) | const URI = 'State'
type URI (line 128) | type URI = typeof URI
type URItoKind2 (line 131) | interface URItoKind2<E, A> {
FILE: src/StateReaderTaskEither.ts
type StateReaderTaskEither (line 74) | interface StateReaderTaskEither<S, R, E, A> {
function rightTask (line 100) | function rightTask<S, R, E = never, A = never>(ma: Task<A>): StateReader...
function leftTask (line 108) | function leftTask<S, R, E, A = never>(me: Task<E>): StateReaderTaskEithe...
function rightReader (line 116) | function rightReader<S, R, E = never, A = never>(ma: Reader<R, A>): Stat...
function leftReader (line 124) | function leftReader<S, R, E, A = never>(me: Reader<R, E>): StateReaderTa...
function rightIO (line 132) | function rightIO<S, R, E = never, A = never>(ma: IO<A>): StateReaderTask...
function leftIO (line 140) | function leftIO<S, R, E, A = never>(me: IO<E>): StateReaderTaskEither<S,...
type StateReaderTaskEitherTypeLambda (line 406) | interface StateReaderTaskEitherTypeLambda extends _.TypeLambda {
constant URI (line 652) | const URI = 'StateReaderTaskEither'
type URI (line 658) | type URI = typeof URI
type URItoKind4 (line 661) | interface URItoKind4<S, R, E, A> {
function run (line 1658) | function run<S, R, E, A>(ma: StateReaderTaskEither<S, R, E, A>, s: S, r:...
FILE: src/StateT.ts
type StateT (line 22) | interface StateT<M, S, A> {
type StateT1 (line 30) | interface StateT1<M extends URIS, S, A> {
type StateT2 (line 38) | interface StateT2<M extends URIS2, S, E, A> {
type StateT3 (line 46) | interface StateT3<M extends URIS3, S, R, E, A> {
function of (line 59) | function of<F>(F: Pointed<F>): <A, S>(a: A) => StateT<F, S, A> {
function map (line 82) | function map<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => <S>(fa: StateT...
function ap (line 107) | function ap<M>(
function chain (line 134) | function chain<M>(
function flatMap (line 148) | function flatMap<M>(
function fromState (line 163) | function fromState<F>(F: Pointed<F>): <S, A>(sa: State<S, A>) => StateT<...
function fromF (line 178) | function fromF<F>(F: Functor<F>): <A, S>(ma: HKT<F, A>) => StateT<F, S, ...
function evaluate (line 199) | function evaluate<F>(F: Functor<F>): <S>(s: S) => <A>(ma: StateT<F, S, A...
function execute (line 218) | function execute<F>(F: Functor<F>): <S>(s: S) => <A>(ma: StateT<F, S, A>...
type StateM (line 231) | interface StateM<M> {
type StateM1 (line 251) | interface StateM1<M extends URIS> {
type StateM2 (line 271) | interface StateM2<M extends URIS2> {
type StateM2C (line 291) | interface StateM2C<M extends URIS2, E> {
type StateM3 (line 311) | interface StateM3<M extends URIS3> {
type StateM3C (line 337) | interface StateM3C<M extends URIS3, E> {
function getStateM (line 373) | function getStateM<M>(M: Monad<M>): StateM<M> {
FILE: src/Store.ts
type Store (line 19) | interface Store<S, A> {
function seek (line 29) | function seek<S>(s: S): <A>(wa: Store<S, A>) => Store<S, A> {
function seeks (line 38) | function seeks<S>(f: Endomorphism<S>): <A>(wa: Store<S, A>) => Store<S, ...
function peeks (line 47) | function peeks<S>(f: Endomorphism<S>): <A>(wa: Store<S, A>) => A {
function experiment (line 72) | function experiment<F>(F: FunctorHKT<F>): <S>(f: (s: S) => HKT<F, S>) =>...
constant URI (line 116) | const URI = 'Store'
type URI (line 122) | type URI = typeof URI
type URItoKind2 (line 125) | interface URItoKind2<E, A> {
FILE: src/Strong.ts
type Strong (line 43) | interface Strong<F> extends Profunctor<F> {
type Strong2 (line 52) | interface Strong2<F extends URIS2> extends Profunctor2<F> {
type Strong3 (line 61) | interface Strong3<F extends URIS3> extends Profunctor3<F> {
type Strong4 (line 70) | interface Strong4<F extends URIS4> extends Profunctor4<F> {
function split (line 105) | function split<F>(
function fanOut (line 147) | function fanOut<F>(
function splitStrong (line 185) | function splitStrong<F>(
function fanout (line 213) | function fanout<F>(
FILE: src/Task.ts
type Task (line 45) | interface Task<A> {
function delay (line 89) | function delay(millis: number): <A>(ma: Task<A>) => Task<A> {
constant URI (line 150) | const URI = 'Task'
type URI (line 156) | type URI = typeof URI
type URItoKind (line 159) | interface URItoKind<A> {
function getRaceMonoid (line 184) | function getRaceMonoid<A = never>(): Monoid<Task<A>> {
type TaskTypeLambda (line 365) | interface TaskTypeLambda extends _.TypeLambda {
FILE: src/TaskEither.ts
type TaskEither (line 77) | interface TaskEither<E, A> extends Task<Either<E, A>> {}
constant URI (line 629) | const URI = 'TaskEither'
type URI (line 635) | type URI = typeof URI
type URItoKind2 (line 638) | interface URItoKind2<E, A> {
function getApplicativeTaskValidation (line 696) | function getApplicativeTaskValidation<E>(A: Apply1<T.URI>, S: Semigroup<...
function getAltTaskValidation (line 716) | function getAltTaskValidation<E>(S: Semigroup<E>): Alt2C<URI, E> {
function getFilterable (line 744) | function getFilterable<E>(M: Monoid<E>): Filterable2C<URI, E> {
type TaskEitherTypeLambda (line 1155) | interface TaskEitherTypeLambda extends _.TypeLambda {
function taskify (line 1482) | function taskify<L, R>(f: Function): () => TaskEither<L, R> {
function getTaskValidation (line 1862) | function getTaskValidation<E>(
FILE: src/TaskOption.ts
type TaskOption (line 56) | interface TaskOption<A> extends Task<Option<A>> {}
type TaskOptionTypeLambda (line 279) | interface TaskOptionTypeLambda extends _.TypeLambda {
constant URI (line 433) | const URI = 'TaskOption'
type URI (line 439) | type URI = typeof URI
type URItoKind (line 442) | interface URItoKind<A> {
FILE: src/TaskThese.ts
type TaskThese (line 47) | interface TaskThese<E, A> extends Task<These<E, A>> {}
constant URI (line 242) | const URI = 'TaskThese'
type URI (line 248) | type URI = typeof URI
type URItoKind2 (line 251) | interface URItoKind2<E, A> {
function getApplicative (line 274) | function getApplicative<E>(A: Apply1<T.URI>, S: Semigroup<E>): Applicati...
function getChain (line 289) | function getChain<E>(S: Semigroup<E>): Chain2C<URI, E> {
function getMonad (line 305) | function getMonad<E>(S: Semigroup<E>): Monad2C<URI, E> & MonadTask2C<URI...
FILE: src/These.ts
type Both (line 61) | interface Both<E, A> {
type These (line 71) | type These<E, A> = Either<E, A> | Both<E, A>
function isBoth (line 99) | function isBoth<E, A>(fa: These<E, A>): fa is Both<E, A> {
function left (line 111) | function left<E = never, A = never>(left: E): These<E, A> {
function right (line 119) | function right<E = never, A = never>(right: A): These<E, A> {
function both (line 127) | function both<E, A>(left: E, right: A): These<E, A> {
function getShow (line 187) | function getShow<E, A>(SE: Show<E>, SA: Show<A>): Show<These<E, A>> {
function getEq (line 201) | function getEq<E, A>(EE: Eq<E>, EA: Eq<A>): Eq<These<E, A>> {
function getSemigroup (line 215) | function getSemigroup<E, A>(SE: Semigroup<E>, SA: Semigroup<A>): Semigro...
function getApplicative (line 270) | function getApplicative<E>(S: Semigroup<E>): Applicative2C<URI, E> {
function getChain (line 285) | function getChain<E>(S: Semigroup<E>): Chain2C<URI, E> {
function getMonad (line 316) | function getMonad<E>(S: Semigroup<E>): Monad2C<URI, E> & MonadThrow2C<UR...
function getLeft (line 343) | function getLeft<E, A>(fa: These<E, A>): Option<E> {
function getRight (line 361) | function getRight<E, A>(fa: These<E, A>): Option<A> {
function leftOrBoth (line 377) | function leftOrBoth<E>(e: E): <A>(ma: Option<A>) => These<E, A> {
function rightOrBoth (line 393) | function rightOrBoth<A>(a: A): <E>(me: Option<E>) => These<E, A> {
function getLeftOnly (line 411) | function getLeftOnly<E, A>(fa: These<E, A>): Option<E> {
function getRightOnly (line 429) | function getRightOnly<E, A>(fa: These<E, A>): Option<A> {
constant URI (line 558) | const URI = 'These'
type URI (line 564) | type URI = typeof URI
type URItoKind2 (line 567) | interface URItoKind2<E, A> {
FILE: src/TheseT.ts
function right (line 25) | function right<F>(F: Pointed<F>): <A, E = never>(a: A) => HKT<F, These<E...
function left (line 38) | function left<F>(F: Pointed<F>): <E, A = never>(e: E) => HKT<F, These<E,...
function both (line 51) | function both<F>(F: Pointed<F>): <E, A = never>(e: E, a: A) => HKT<F, Th...
function rightF (line 72) | function rightF<F>(F: Functor<F>): <A, E = never>(fa: HKT<F, A>) => HKT<...
function leftF (line 93) | function leftF<F>(F: Functor<F>): <E, A = never>(fe: HKT<F, E>) => HKT<F...
function map (line 116) | function map<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => <E>(fa: HKT<F,...
function ap (line 151) | function ap<F, E>(
function chain (line 189) | function chain<M, E>(
function bimap (line 237) | function bimap<F>(
function mapLeft (line 264) | function mapLeft<F>(
function match (line 315) | function match<F>(
function matchE (line 370) | function matchE<M>(
function swap (line 397) | function swap<F>(F: Functor<F>): <E, A>(ma: HKT<F, These<E, A>>) => HKT<...
function toTuple2 (line 422) | function toTuple2<F>(
type TheseT (line 437) | interface TheseT<M, E, A> extends HKT<M, These<E, A>> {}
type TheseM (line 444) | interface TheseM<M> {
type TheseT1 (line 475) | type TheseT1<M extends URIS, E, A> = Kind<M, These<E, A>>
type TheseM1 (line 482) | interface TheseM1<M extends URIS> {
type TheseT2 (line 513) | type TheseT2<M extends URIS2, R, E, A> = Kind2<M, R, These<E, A>>
type TheseM2 (line 520) | interface TheseM2<M extends URIS2> {
function getTheseM (line 558) | function getTheseM<M>(M: Monad<M>): TheseM<M> {
FILE: src/Traced.ts
type Traced (line 17) | interface Traced<P, A> {
function tracks (line 27) | function tracks<P, A>(M: Monoid<P>, f: (a: A) => P): (wa: Traced<P, A>) ...
function listen (line 36) | function listen<P, A>(wa: Traced<P, A>): Traced<P, [A, P]> {
function listens (line 45) | function listens<P, B>(f: (p: P) => B): <A>(wa: Traced<P, A>) => Traced<...
function censor (line 54) | function censor<P>(f: (p: P) => P): <A>(wa: Traced<P, A>) => Traced<P, A> {
function getComonad (line 62) | function getComonad<P>(monoid: Monoid<P>): Comonad2C<URI, P> {
constant URI (line 96) | const URI = 'Traced'
type URI (line 102) | type URI = typeof URI
type URItoKind2 (line 105) | interface URItoKind2<E, A> {
FILE: src/Traversable.ts
type Traversable (line 69) | interface Traversable<T> extends Functor<T>, Foldable<T> {
type Traversable1 (line 81) | interface Traversable1<T extends URIS> extends Functor1<T>, Foldable1<T> {
type Traversable2 (line 90) | interface Traversable2<T extends URIS2> extends Functor2<T>, Foldable2<T> {
type Traversable2C (line 99) | interface Traversable2C<T extends URIS2, TL> extends Functor2C<T, TL>, F...
type Traversable3 (line 108) | interface Traversable3<T extends URIS3> extends Functor3<T>, Foldable3<T> {
type Traverse (line 116) | interface Traverse<T> {
FILE: src/TraversableWithIndex.ts
type TraversableWithIndex (line 36) | interface TraversableWithIndex<T, I> extends FunctorWithIndex<T, I>, Fol...
type TraversableWithIndex1 (line 43) | interface TraversableWithIndex1<T extends URIS, I>
type TraversableWithIndex2 (line 53) | interface TraversableWithIndex2<T extends URIS2, I>
type TraversableWithIndex2C (line 63) | interface TraversableWithIndex2C<T extends URIS2, I, E>
type TraverseWithIndex (line 73) | interface TraverseWithIndex<T, I> {
FILE: src/Tree.ts
type Forest (line 37) | type Forest<A> = Array<Tree<A>>
type Tree (line 43) | interface Tree<A> {
function make (line 52) | function make<A>(value: A, forest: Forest<A> = []): Tree<A> {
function getShow (line 63) | function getShow<A>(S: Show<A>): Show<Tree<A>> {
function getEq (line 78) | function getEq<A>(E: Eq<A>): Eq<Tree<A>> {
function drawForest (line 104) | function drawForest(forest: Forest<string>): string {
function drawTree (line 130) | function drawTree(tree: Tree<string>): string {
function unfoldTree (line 140) | function unfoldTree<A, B>(b: B, f: (b: B) => [A, Array<B>]): Tree<A> {
function unfoldForest (line 151) | function unfoldForest<A, B>(bs: Array<B>, f: (b: B) => [A, Array<B>]): F...
function unfoldTreeM (line 180) | function unfoldTreeM<M>(M: MonadHKT<M>): <A, B>(b: B, f: (b: B) => HKT<M...
function unfoldForestM (line 212) | function unfoldForestM<M>(
function fold (line 251) | function fold<A, B>(f: (a: A, bs: Array<B>) => B): (tree: Tree<A>) => B {
constant URI (line 410) | const URI = 'Tree'
type URI (line 416) | type URI = typeof URI
type URItoKind (line 419) | interface URItoKind<A> {
function elem (line 595) | function elem<A>(E: Eq<A>): (a: A, fa: Tree<A>) => boolean {
FILE: src/Tuple.ts
function getApply (line 46) | function getApply<S>(S: Semigroup<S>): Apply2C<URI, S> {
function getApplicative (line 65) | function getApplicative<M>(M: Monoid<M>): Applicative2C<URI, M> {
function getChain (line 80) | function getChain<S>(S: Semigroup<S>): Chain2C<URI, S> {
function getMonad (line 98) | function getMonad<M>(M: Monoid<M>): Monad2C<URI, M> {
function getChainRec (line 114) | function getChainRec<M>(M: Monoid<M>): ChainRec2C<URI, M> {
function _traverse (line 158) | function _traverse<F>(F: Applicative<F>): <A, S, B>(ta: [A, S], f: (a: A...
constant URI (line 255) | const URI = 'Tuple'
type URI (line 261) | type URI = typeof URI
type URItoKind2 (line 264) | interface URItoKind2<E, A> {
FILE: src/Unfoldable.ts
type Unfoldable (line 17) | interface Unfoldable<F> {
type Unfoldable1 (line 26) | interface Unfoldable1<F extends URIS> {
type Unfoldable2 (line 35) | interface Unfoldable2<F extends URIS2> {
type Unfoldable2C (line 44) | interface Unfoldable2C<F extends URIS2, E> {
type Unfoldable3 (line 54) | interface Unfoldable3<F extends URIS3> {
type Unfoldable3C (line 63) | interface Unfoldable3C<F extends URIS3, E> {
type Unfoldable4 (line 73) | interface Unfoldable4<F extends URIS4> {
FILE: src/ValidationT.ts
type ValidationT (line 28) | interface ValidationT<M, E, A> extends HKT<M, Either<E, A>> {}
type ValidationM (line 36) | interface ValidationM<M, E> extends ApplicativeCompositionHKT2C<M, E.URI...
type ValidationT1 (line 47) | type ValidationT1<M extends URIS, E, A> = Kind<M, Either<E, A>>
type ValidationM1 (line 55) | interface ValidationM1<M extends URIS, E> extends ApplicativeComposition...
type ValidationT2 (line 66) | type ValidationT2<M extends URIS2, R, E, A> = Kind2<M, R, Either<E, A>>
type ValidationM2 (line 74) | interface ValidationM2<M extends URIS2, E> extends ApplicativeCompositio...
function getValidationM (line 104) | function getValidationM<E, M>(S: Semigroup<E>, M: Monad<M>): ValidationM...
FILE: src/Witherable.ts
type Witherable (line 26) | interface Witherable<T> extends Traversable<T>, Filterable<T> {
type Witherable1 (line 42) | interface Witherable1<T extends URIS> extends Traversable1<T>, Filterabl...
type Witherable2 (line 51) | interface Witherable2<T extends URIS2> extends Traversable2<T>, Filterab...
type Witherable2C (line 60) | interface Witherable2C<T extends URIS2, TL> extends Traversable2C<T, TL>...
type Witherable3 (line 69) | interface Witherable3<T extends URIS3> extends Traversable3<T>, Filterab...
type Wither (line 77) | interface Wither<W> {
FILE: src/Writer.ts
type Writer (line 22) | interface Writer<W, A> {
constant URI (line 101) | const URI = 'Writer'
type URI (line 107) | type URI = typeof URI
type URItoKind2 (line 110) | interface URItoKind2<E, A> {
function getChain (line 160) | function getChain<W>(S: Semigroup<W>): Chain2C<URI, W> {
function getMonad (line 179) | function getMonad<W>(M: Monoid<W>): Monad2C<URI, W> {
FILE: src/WriterT.ts
type WriterT (line 14) | interface WriterT<M, W, A> {
type WriterM (line 21) | interface WriterM<M> {
type WriterT1 (line 43) | interface WriterT1<M extends URIS, W, A> {
type WriterM1 (line 50) | interface WriterM1<M extends URIS> {
type WriterT2 (line 72) | interface WriterT2<M extends URIS2, E, W, A> {
type WriterM2 (line 79) | interface WriterM2<M extends URIS2> {
type WriterM2C (line 100) | interface WriterM2C<M extends URIS2, E> {
type WriterT3 (line 121) | interface WriterT3<M extends URIS3, R, E, W, A> {
type WriterM3 (line 128) | interface WriterM3<M extends URIS3> {
function getWriterM (line 160) | function getWriterM<M>(M: Monad<M>): WriterM<M> {
FILE: src/Zero.ts
type Zero (line 15) | interface Zero<F> {
type Zero1 (line 24) | interface Zero1<F extends URIS> {
type Zero2 (line 33) | interface Zero2<F extends URIS2> {
type Zero2C (line 42) | interface Zero2C<F extends URIS2, E> {
type Zero3 (line 52) | interface Zero3<F extends URIS3> {
type Zero3C (line 61) | interface Zero3C<F extends URIS3, E> {
type Zero4 (line 71) | interface Zero4<F extends URIS4> {
function guard (line 87) | function guard<F>(F: Zero<F>, P: Pointed<F>): (b: boolean) => HKT<F, voi...
FILE: src/function.ts
type FunctionN (line 136) | interface FunctionN<A extends ReadonlyArray<unknown>, B> {
function identity (line 143) | function identity<A>(a: A): A {
function constant (line 155) | function constant<A>(a: A): LazyArg<A> {
function flip (line 209) | function flip(f: Function): Function {
function flow (line 294) | function flow(
function tuple (line 347) | function tuple<T extends ReadonlyArray<any>>(...t: T): T {
function increment (line 354) | function increment(n: number): number {
function decrement (line 361) | function decrement(n: number): number {
function absurd (line 368) | function absurd<A>(_: never): A {
function tupled (line 384) | function tupled<A extends ReadonlyArray<unknown>, B>(f: (...a: A) => B):...
function untupled (line 393) | function untupled<A extends ReadonlyArray<unknown>, B>(f: (a: A) => B): ...
function pipe (line 651) | function pipe(
type Refinement (line 714) | interface Refinement<A, B extends A> {
type Predicate (line 725) | interface Predicate<A> {
function not (line 736) | function not<A>(predicate: Predicate<A>): Predicate<A> {
type Endomorphism (line 747) | interface Endomorphism<A> {
type LazyArg (line 768) | interface LazyArg<A> {
FILE: src/internal.ts
type TypeLambda (line 90) | interface TypeLambda {
type TypeClass (line 98) | interface TypeClass<F extends TypeLambda> {
type Kind (line 103) | type Kind<F extends TypeLambda, In, Out2, Out1, Target> = F extends {
type FromEither (line 125) | interface FromEither<F extends TypeLambda> extends TypeClass<F> {
type FromIO (line 130) | interface FromIO<F extends TypeLambda> extends TypeClass<F> {
type FromTask (line 135) | interface FromTask<F extends TypeLambda> extends TypeClass<F> {
type FromReader (line 140) | interface FromReader<F extends TypeLambda> extends TypeClass<F> {
type FlatMap (line 165) | interface FlatMap<F extends TypeLambda> extends TypeClass<F> {
FILE: src/pipeable.ts
function map (line 131) | function map<F>(F: Functor<F>): <A, B>(f: (a: A) => B) => (fa: HKT<F, A>...
function contramap (line 160) | function contramap<F>(F: Contravariant<F>): <A, B>(f: (b: B) => A) => (f...
function mapWithIndex (line 191) | function mapWithIndex<F, I>(
function ap (line 220) | function ap<F>(F: Apply<F>): <A>(fa: HKT<F, A>) => <B>(fab: HKT<F, (a: A...
function chain (line 247) | function chain<F>(F: Chain<F>): <A, B>(f: (a: A) => HKT<F, B>) => (fa: H...
function bimap (line 275) | function bimap<F>(
function mapLeft (line 303) | function mapLeft<F>(F: Bifunctor<F>): <E, G>(f: (e: E) => G) => <A>(fea:...
function extend (line 332) | function extend<F>(F: Extend<F>): <A, B>(f: (wa: HKT<F, A>) => B) => (wa...
function reduce (line 359) | function reduce<F>(F: Foldable<F>): <A, B>(b: B, f: (b: B, a: A) => B) =...
function foldMap (line 388) | function foldMap<F>(F: Foldable<F>): <M>(M: Monoid<M>) => <A>(f: (a: A) ...
function reduceRight (line 420) | function reduceRight<F>(F: Foldable<F>): <A, B>(b: B, f: (a: A, b: B) =>...
function reduceWithIndex (line 451) | function reduceWithIndex<F, I>(
function foldMapWithIndex (line 484) | function foldMapWithIndex<F, I>(
function reduceRightWithIndex (line 520) | function reduceRightWithIndex<F, I>(
function alt (line 549) | function alt<F>(F: Alt<F>): <A>(that: LazyArg<HKT<F, A>>) => (fa: HKT<F,...
function filter (line 599) | function filter<F>(F: Filterable<F>): <A>(predicate: Predicate<A>) => (f...
function filterMap (line 628) | function filterMap<F>(F: Filterable<F>): <A, B>(f: (a: A) => Option<B>) ...
function partition (line 686) | function partition<F>(
function partitionMap (line 723) | function partitionMap<F>(
function filterWithIndex (line 779) | function filterWithIndex<F, I>(
function filterMapWithIndex (line 812) | function filterMapWithIndex<F, I>(
function partitionWithIndex (line 882) | function partitionWithIndex<F, I>(
function partitionMapWithIndex (line 921) | function partitionMapWithIndex<F, I>(
function promap (line 951) | function promap<F>(
function compose (line 979) | function compose<F>(F: Semigroupoid<F>): <E, A>(ea: HKT2<F, E, A>) => <B...
type PipeableFunctor (line 992) | interface PipeableFunctor<F> {
type PipeableFunctor1 (line 1001) | interface PipeableFunctor1<F extends URIS> {
type PipeableFunctor2 (line 1010) | interface PipeableFunctor2<F extends URIS2> {
type PipeableFunctor2C (line 1019) | interface PipeableFunctor2C<F extends URIS2, E> {
type PipeableFunctor3 (line 1028) | interface PipeableFunctor3<F extends URIS3> {
type PipeableFunctor3C (line 1036) | interface PipeableFunctor3C<F extends URIS3, E> {
type PipeableFunctor4 (line 1045) | interface PipeableFunctor4<F extends URIS4> {
type PipeableContravariant (line 1054) | interface PipeableContravariant<F> {
type PipeableContravariant1 (line 1063) | interface PipeableContravariant1<F extends URIS> {
type PipeableContravariant2 (line 1072) | interface PipeableContravariant2<F extends URIS2> {
type PipeableContravariant2C (line 1081) | interface PipeableContravariant2C<F extends URIS2, E> {
type PipeableContravariant3 (line 1090) | interface PipeableContravariant3<F extends URIS3> {
type PipeableContravariant3C (line 1098) | interface PipeableContravariant3C<F extends URIS3, E> {
type PipeableContravariant4 (line 1107) | interface PipeableContravariant4<F extends URIS4> {
type PipeableFunctorWithIndex (line 1116) | interface PipeableFunctorWithIndex<F, I> extends PipeableFunctor<F> {
type PipeableFunctorWithIndex1 (line 1125) | interface PipeableFunctorWithIndex1<F extends URIS, I> extends PipeableF...
type PipeableFunctorWithIndex2 (line 1134) | interface PipeableFunctorWithIndex2<F extends URIS2, I> extends Pipeable...
type PipeableFunctorWithIndex2C (line 1143) | interface PipeableFunctorWithIndex2C<F extends URIS2, I, E> extends Pipe...
type PipeableFunctorWithIndex3 (line 1152) | interface PipeableFunctorWithIndex3<F extends URIS3, I> extends Pipeable...
type PipeableFunctorWithIndex3C (line 1160) | interface PipeableFunctorWithIndex3C<F extends URIS3, I, E> extends Pipe...
type PipeableFunctorWithIndex4 (line 1169) | interface PipeableFunctorWithIndex4<F extends URIS4, I> extends Pipeable...
type PipeableApply (line 1178) | interface PipeableApply<F> extends PipeableFunctor<F> {
type PipeableApply1 (line 1189) | interface PipeableApply1<F extends URIS> extends PipeableFunctor1<F> {
type PipeableApply2 (line 1200) | interface PipeableApply2<F extends URIS2> extends PipeableFunctor2<F> {
type PipeableApply2C (line 1211) | interface PipeableApply2C<F extends URIS2, E> extends PipeableFunctor2C<...
type PipeableApply3 (line 1222) | interface PipeableApply3<F extends URIS3> extends PipeableFunctor3<F> {
type PipeableApply3C (line 1232) | interface PipeableApply3C<F extends URIS3, E> extends PipeableFunctor3C<...
type PipeableApply4 (line 1243) | interface PipeableApply4<F extends URIS4> extends PipeableFunctor4<F> {
type PipeableChain (line 1256) | interface PipeableChain<F> extends PipeableApply<F> {
type PipeableChain1 (line 1267) | interface PipeableChain1<F extends URIS> extends PipeableApply1<F> {
type PipeableChain2 (line 1278) | interface PipeableChain2<F extends URIS2> extends PipeableApply2<F> {
type PipeableChain2C (line 1289) | interface PipeableChain2C<F extends URIS2, E> extends PipeableApply2C<F,...
type PipeableChain3 (line 1300) | interface PipeableChain3<F extends URIS3> extends PipeableApply3<F> {
type PipeableChain3C (line 1310) | interface PipeableChain3C<F extends URIS3, E> extends PipeableApply3C<F,...
type PipeableChain4 (line 1321) | interface PipeableChain4<F extends URIS4> extends PipeableApply4<F> {
type PipeableExtend (line 1336) | interface PipeableExtend<F> extends PipeableFunctor<F> {
type PipeableExtend1 (line 1346) | interface PipeableExtend1<F extends URIS> extends PipeableFunctor1<F> {
type PipeableExtend2 (line 1356) | interface PipeableExtend2<F extends URIS2> extends PipeableFunctor2<F> {
type PipeableExtend2C (line 1366) | interface PipeableExtend2C<F extends URIS2, E> extends PipeableFunctor2C...
type PipeableExtend3 (line 1376) | interface PipeableExtend3<F extends URIS3> extends PipeableFunctor3<F> {
type PipeableExtend3C (line 1385) | interface PipeableExtend3C<F extends URIS3, E> extends PipeableFunctor3C...
type PipeableExtend4 (line 1395) | interface PipeableExtend4<F extends URIS4> extends PipeableFunctor4<F> {
type PipeableBifunctor (line 1407) | interface PipeableBifunctor<F> {
type PipeableBifunctor2 (line 1417) | interface PipeableBifunctor2<F extends URIS2> {
type PipeableBifunctor3 (line 1427) | interface PipeableBifunctor3<F extends URIS3> {
type PipeableBifunctor3C (line 1436) | interface PipeableBifunctor3C<F extends URIS3, E> {
type PipeableBifunctor4 (line 1446) | interface PipeableBifunctor4<F extends URIS4> {
type PipeableFoldable (line 1459) | interface PipeableFoldable<F> {
type PipeableFoldable1 (line 1470) | interface PipeableFoldable1<F extends URIS> {
type PipeableFoldable2 (line 1481) | interface PipeableFoldable2<F extends URIS2> {
type PipeableFoldable2C (line 1492) | interface PipeableFoldable2C<F extends URIS2, E> {
type PipeableFoldable3 (line 1503) | interface PipeableFoldable3<F extends URIS3> {
type PipeableFoldable3C (line 1513) | interface PipeableFoldable3C<F extends URIS3, E> {
type PipeableFoldable4 (line 1524) | interface PipeableFoldable4<F extends URIS4> {
type PipeableFoldableWithIndex (line 1535) | interface PipeableFoldableWithIndex<F, I> extends PipeableFoldable<F> {
type PipeableFoldableWithIndex1 (line 1546) | interface PipeableFoldableWithIndex1<F extends URIS, I> extends Pipeable...
type PipeableFoldableWithIndex2 (line 1557) | interface PipeableFoldableWithIndex2<F extends URIS2, I> extends Pipeabl...
type PipeableFoldableWithIndex2C (line 1568) | interface PipeableFoldableWithIndex2C<F extends URIS2, I, E> extends Pip...
type PipeableFoldableWithIndex3 (line 1579) | interface PipeableFoldableWithIndex3<F extends URIS3, I> extends Pipeabl...
type PipeableFoldableWithIndex3C (line 1589) | interface PipeableFoldableWithIndex3C<F extends URIS3, I, E> extends Pip...
type PipeableFoldableWithIndex4 (line 1600) | interface PipeableFoldableWithIndex4<F extends URIS4, I> extends Pipeabl...
type PipeableAlt (line 1611) | interface PipeableAlt<F> {
type PipeableAlt1 (line 1620) | interface PipeableAlt1<F extends URIS> {
type PipeableAlt2 (line 1629) | interface PipeableAlt2<F extends URIS2> {
type PipeableAlt2C (line 1638) | interface PipeableAlt2C<F extends URIS2, E> {
type PipeableAlt3 (line 1647) | interface PipeableAlt3<F extends URIS3> {
type PipeableAlt3C (line 1655) | interface PipeableAlt3C<F extends URIS3, E> {
type PipeableAlt4 (line 1664) | interface PipeableAlt4<F extends URIS4> {
type PipeableCompactable (line 1673) | interface PipeableCompactable<F> {
type PipeableCompactable1 (line 1683) | interface PipeableCompactable1<F extends URIS> {
type PipeableCompactable2 (line 1693) | interface PipeableCompactable2<F extends URIS2> {
type PipeableCompactable2C (line 1703) | interface PipeableCompactable2C<F extends URIS2, E> {
type PipeableCompactable3 (line 1713) | interface PipeableCompactable3<F extends URIS3> {
type PipeableCompactable3C (line 1722) | interface PipeableCompactable3C<F extends URIS3, E> {
type PipeableCompactable4 (line 1732) | interface PipeableCompactable4<F extends URIS4> {
type PipeableFilterable (line 1744) | interface PipeableFilterable<F> extends PipeableCompactable<F> {
type PipeableFilterable1 (line 1762) | interface PipeableFilterable1<F extends URIS> extends PipeableCompactabl...
type PipeableFilterable2 (line 1780) | interface PipeableFilterable2<F extends URIS2> extends PipeableCompactab...
type PipeableFilterable2C (line 1800) | interface PipeableFilterable2C<F extends URIS2, E> extends PipeableCompa...
type PipeableFilterable3 (line 1820) | interface PipeableFilterable3<F extends URIS3> extends PipeableCompactab...
type PipeableFilterable3C (line 1841) | interface PipeableFilterable3C<F extends URIS3, E> extends PipeableCompa...
type PipeableFilterable4 (line 1863) | interface PipeableFilterable4<F extends URIS4> extends PipeableCompactab...
type PipeableFilterableWithIndex (line 1887) | interface PipeableFilterableWithIndex<F, I> extends PipeableFilterable<F> {
type PipeableFilterableWithIndex1 (line 1909) | interface PipeableFilterableWithIndex1<F extends URIS, I> extends Pipeab...
type PipeableFilterableWithIndex2 (line 1931) | interface PipeableFilterableWithIndex2<F extends URIS2, I> extends Pipea...
type PipeableFilterableWithIndex2C (line 1955) | interface PipeableFilterableWithIndex2C<F extends URIS2, I, E> extends P...
type PipeableFilterableWithIndex3 (line 1977) | interface PipeableFilterableWithIndex3<F extends URIS3, I> extends Pipea...
type PipeableFilterableWithIndex3C (line 2004) | interface PipeableFilterableWithIndex3C<F extends URIS3, I, E> extends P...
type PipeableFilterableWithIndex4 (line 2028) | interface PipeableFilterableWithIndex4<F extends URIS4, I> extends Pipea...
type PipeableProfunctor (line 2056) | interface PipeableProfunctor<F> {
type PipeableProfunctor2 (line 2065) | interface PipeableProfunctor2<F extends URIS2> extends PipeableFunctor2<...
type PipeableProfunctor2C (line 2074) | interface PipeableProfunctor2C<F extends URIS2, E> extends PipeableFunct...
type PipeableProfunctor3 (line 2083) | interface PipeableProfunctor3<F extends URIS3> extends PipeableFunctor3<...
type PipeableProfunctor3C (line 2091) | interface PipeableProfunctor3C<F extends URIS3, E> extends PipeableFunct...
type PipeableProfunctor4 (line 2100) | interface PipeableProfunctor4<F extends URIS4> extends PipeableFunctor4<...
type PipeableSemigroupoid (line 2112) | interface PipeableSemigroupoid<F> {
type PipeableSemigroupoid2 (line 2121) | interface PipeableSemigroupoid2<F extends URIS2> {
type PipeableSemigroupoid2C (line 2130) | interface PipeableSemigroupoid2C<F extends URIS2, E> {
type PipeableSemigroupoid3 (line 2139) | interface PipeableSemigroupoid3<F extends URIS3> {
type PipeableSemigroupoid3C (line 2147) | interface PipeableSemigroupoid3C<F extends URIS3, E> {
type PipeableSemigroupoid4 (line 2156) | interface PipeableSemigroupoid4<F extends URIS4> {
type PipeableMonadThrow (line 2165) | interface PipeableMonadThrow<F> {
type PipeableMonadThrow1 (line 2183) | interface PipeableMonadThrow1<F extends URIS> {
type PipeableMonadThrow2 (line 2201) | interface PipeableMonadThrow2<F extends URIS2> {
type PipeableMonadThrow2C (line 2219) | interface PipeableMonadThrow2C<F extends URIS2, E> {
type PipeableMonadThrow3 (line 2237) | interface PipeableMonadThrow3<F extends URIS3> {
type PipeableMonadThrow3C (line 2256) | interface PipeableMonadThrow3C<F extends URIS3, E> {
type PipeableMonadThrow4 (line 2276) | interface PipeableMonadThrow4<F extends URIS4> {
function pipeable (line 2520) | function pipeable<F, I>(I: { readonly URI: F } & I): Record<string, unkn...
FILE: test/Array.ts
type X (line 621) | interface X {
type A (line 827) | interface A {
type Person (line 863) | interface Person {
type Foo (line 1129) | interface Foo {
FILE: test/Either.ts
type Color (line 272) | type Color = 'red' | 'blue'
type Person (line 346) | interface Person {
type Color (line 369) | type Color = 'red' | 'blue'
FILE: test/Eq.ts
type Person (line 31) | interface Person {
type A (line 37) | interface A {
type T (line 69) | type T = readonly [string, number, boolean]
FILE: test/Foldable.ts
type ArrayOptionURI (line 12) | type ArrayOptionURI = typeof ArrayOptionURI
FILE: test/Json.ts
type Person (line 27) | type Person = {
FILE: test/Map.ts
type User (line 19) | interface User {
type Key (line 32) | interface Key {
type Value (line 36) | interface Value {
FILE: test/Option.ts
type X (line 309) | interface X {
type Direction (line 370) | type Direction = 'asc' | 'desc'
type A (line 450) | type A = { readonly type: 'A' }
type B (line 451) | type B = { readonly type: 'B' }
type C (line 452) | type C = A | B
FILE: test/Ord.ts
type T (line 20) | type T = readonly [number, string]
type A (line 95) | interface A {
type A (line 116) | type A = { readonly a: number }
type A (line 131) | type A = { readonly a: number }
FILE: test/Predicate.ts
type A (line 11) | type A = {
type A (line 24) | type A = {
FILE: test/Reader.ts
type Env (line 9) | interface Env {
type R1 (line 72) | type R1 = { readonly env1: unknown }
type R2 (line 73) | type R2 = { readonly env2: unknown }
type E (line 102) | interface E {
FILE: test/ReaderEither.ts
type R1 (line 81) | type R1 = { readonly env1: unknown }
type R2 (line 82) | type R2 = { readonly env2: unknown }
type E1 (line 83) | type E1 = { readonly left1: unknown }
type E2 (line 84) | type E2 = { readonly left2: unknown }
FILE: test/ReaderIO.ts
type R1 (line 63) | type R1 = { readonly env1: unknown }
type R2 (line 64) | type R2 = { readonly env2: unknown }
FILE: test/ReaderTask.ts
type R1 (line 79) | type R1 = { readonly env1: unknown }
type R2 (line 80) | type R2 = { readonly env2: unknown }
FILE: test/ReaderTaskEither.ts
type R1 (line 83) | type R1 = { readonly env1: unknown }
type R2 (line 84) | type R2 = { readonly env2: unknown }
type E1 (line 85) | type E1 = { readonly left1: unknown }
type E2 (line 86) | type E2 = { readonly left2: unknown }
FILE: test/ReadonlyArray.ts
type X (line 648) | interface X {
type A (line 890) | interface A {
type X (line 929) | interface X {
type Foo (line 1199) | interface Foo {
FILE: test/ReadonlyMap.ts
type User (line 20) | interface User {
type Key (line 33) | interface Key {
type Value (line 37) | interface Value {
FILE: test/ReadonlyNonEmptyArray.ts
type A (line 536) | interface A {
type X (line 574) | interface X {
FILE: test/ReadonlyRecord.ts
type User (line 506) | interface User {
FILE: test/ReadonlySet.ts
type Foo (line 16) | interface Foo {
type R (line 197) | type R = { readonly id: string }
type L (line 213) | type L = { readonly error: string }
type R (line 214) | type R = { readonly id: string }
type R (line 237) | type R = { readonly id: string }
FILE: test/ReadonlyTuple.ts
function seqReq (line 103) | function seqReq(upper: number): readonly [number, ReadonlyArray<number>] {
FILE: test/Record.ts
type User (line 472) | interface User {
FILE: test/Refinement.ts
type NonEmptyStringBrand (line 11) | interface NonEmptyStringBrand {
type NonEmptyString (line 15) | type NonEmptyString = string & NonEmptyStringBrand
type A (line 52) | type A = { readonly type: 'A' }
type B (line 53) | type B = { readonly type: 'B' }
type C (line 54) | type C = A | B
type A (line 83) | type A = { readonly type: 'A' }
type B (line 84) | type B = { readonly type: 'B' }
type C (line 85) | type C = A | B
FILE: test/Semigroup.ts
type T (line 82) | type T = {
FILE: test/Set.ts
type Foo (line 14) | interface Foo {
type R (line 192) | type R = { readonly id: string }
type L (line 208) | type L = { readonly error: string }
type R (line 209) | type R = { readonly id: string }
type R (line 232) | type R = { readonly id: string }
FILE: test/StateReaderTaskEither.ts
type S (line 113) | type S = unknown
type R1 (line 114) | type R1 = { readonly env1: unknown }
type R2 (line 115) | type R2 = { readonly env2: unknown }
type E1 (line 116) | type E1 = { readonly left1: unknown }
type E2 (line 117) | type E2 = { readonly left2: unknown }
type Env (line 502) | interface Env {
FILE: test/Traced.ts
type Settings (line 9) | interface Settings {
type Project (line 23) | interface Project {
type ProjectBuilder (line 30) | interface ProjectBuilder extends _.Traced<Settings, Project> {}
FILE: test/Traversable.ts
type ArrayOptionURI (line 10) | type ArrayOptionURI = typeof ArrayOptionURI
FILE: test/Tree.ts
type User (line 221) | interface User {
type User (line 235) | interface User {
FILE: test/Tuple.ts
function seqReq (line 103) | function seqReq(upper: number): [number, ReadonlyArray<number>] {
FILE: test/index.ts
function getModuleNames (line 23) | function getModuleNames(): ReadonlyArray<string> {
FILE: test/struct.ts
type T (line 7) | type T = {
FILE: test/util.ts
type AssertParSeq (line 18) | interface AssertParSeq {
Condensed preview — 429 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,254K chars).
[
{
"path": ".editorconfig",
"chars": 41,
"preview": "[*]\nindent_style = space\nindent_size = 2\n"
},
{
"path": ".eslintrc.json",
"chars": 1417,
"preview": "{\n \"parserOptions\": {\n \"project\": \"./tsconfig.eslint.json\"\n },\n \"extends\": [\n \"eslint:recommended\",\n \"plugin"
},
{
"path": ".github/FUNDING.yml",
"chars": 17,
"preview": "github: [gcanti]\n"
},
{
"path": ".github/ISSUE_TEMPLATE/Bug_report.md",
"chars": 773,
"preview": "---\nname: \"\\U0001F41B Bug report\"\nabout: Create a report to help make fp-ts better\n---\n\n## 🐛 Bug report\n\n### Current Beh"
},
{
"path": ".github/ISSUE_TEMPLATE/Documentation.md",
"chars": 119,
"preview": "---\nname: \"\\U0001F41B Documentation\"\nabout: Improvements or suggestions of fp-ts documentation\n---\n\n## 📖 Documentation\n"
},
{
"path": ".github/ISSUE_TEMPLATE/Feature_request.md",
"chars": 1157,
"preview": "---\nname: \"\\U0001F680Feature request\"\nabout: Suggest an idea for fp-ts\n---\n\n## 🚀 Feature request\n\n### Current Behavior\n\n"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 668,
"preview": "**Before submitting a pull request,** please make sure the following is done:\n\n- Fork [the repository](https://github.co"
},
{
"path": ".github/workflows/main.yml",
"chars": 571,
"preview": "name: Node.js CI\n\non:\n push:\n branches: [master]\n pull_request:\n branches: [master]\n\n # Allows you to run this "
},
{
"path": ".gitignore",
"chars": 58,
"preview": "*.log\nnode_modules\n/dist\ndev\n.idea\ncoverage\ndocs/examples\n"
},
{
"path": ".prettierrc",
"chars": 91,
"preview": "{\n \"semi\": false,\n \"singleQuote\": true,\n \"printWidth\": 120,\n \"trailingComma\": \"none\"\n}\n"
},
{
"path": ".vscode/settings.json",
"chars": 261,
"preview": "{\n \"typescript.tsdk\": \"./node_modules/typescript/lib\",\n \"editor.defaultFormatter\": \"esbenp.prettier-vscode\",\n \"eslint"
},
{
"path": "CHANGELOG.md",
"chars": 107897,
"preview": "# Changelog\n\n> **Tags:**\n>\n> - [New Feature]\n> - [Bug Fix]\n> - [Breaking Change]\n> - [Documentation]\n> - [Internal]\n> - "
},
{
"path": "Do.md",
"chars": 1135,
"preview": "# Do notation\n\n**Cheatsheet**\n\n| Haskell | TypeScript |\n| ------------- | --------------------"
},
{
"path": "LICENSE",
"chars": 1077,
"preview": "MIT License\n\nCopyright (c) 2017-present Giulio Canti\n\nPermission is hereby granted, free of charge, to any person obtain"
},
{
"path": "README.md",
"chars": 5015,
"preview": "<h3 align=\"center\">\n <a href=\"https://gcanti.github.io/fp-ts/\">\n <img src=\"./docs/fp-ts-logo.png\">\n </a>\n</h3>\n\n<p "
},
{
"path": "code2comment.html",
"chars": 793,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"UTF-8\" />\n <title>code 2 comment</title>\n </head>\n\n <body>\n <"
},
{
"path": "docs/_config.yml",
"chars": 303,
"preview": "remote_theme: pmarsceill/just-the-docs\n\n# Enable or disable the site search\nsearch_enabled: true\n\n# Aux links for the up"
},
{
"path": "docs/_sass/custom/custom.scss",
"chars": 120,
"preview": "$fp-ts-blue-000: #0088e6;\n$fp-ts-blue-100: #0075c5;\n\n$link-color: $fp-ts-blue-000;\n$btn-primary-color: $fp-ts-blue-100;\n"
},
{
"path": "docs/ecosystem.md",
"chars": 4957,
"preview": "---\ntitle: Ecosystem\npermalink: /ecosystem/\nnav_order: 3\nhas_children: false\nhas_toc: false\n---\n\n# Ecosystem\n\n## Tooling"
},
{
"path": "docs/guides/HKT.md",
"chars": 4739,
"preview": "---\ntitle: Write type class instances\nparent: Guides\nnav_order: 2\n---\n\n# How to write type class instances for your data"
},
{
"path": "docs/guides/code-conventions.md",
"chars": 6994,
"preview": "---\ntitle: Code Conventions\nparent: Guides\nnav_order: 1\n---\n\n# Code Conventions\n\n<!-- START doctoc generated TOC please "
},
{
"path": "docs/guides/do-notation.md",
"chars": 3506,
"preview": "---\ntitle: Do notation\nparent: Guides\nnav_order: 4\n---\n\n# Do Notation\n\nBoth [Haskell](https://wiki.haskell.org/Monad#do-"
},
{
"path": "docs/guides/index.md",
"chars": 98,
"preview": "---\ntitle: Guides\npermalink: /guides/\nnav_order: 5\nhas_children: true\nhas_toc: true\n---\n\n# Guides\n"
},
{
"path": "docs/guides/purescript.md",
"chars": 4262,
"preview": "---\ntitle: Migrate from PureScript/Haskell\nparent: Guides\nnav_order: 3\n---\n\n# Migrate from PureScript/Haskell\n\nThis guid"
},
{
"path": "docs/guides/upgrade-to-v2.md",
"chars": 5627,
"preview": "---\ntitle: Upgrade to fp-ts 2.x\nparent: Guides\nnav_order: 5\n---\n\n# Upgrade to version 2.x\n\n`fp-ts@2.x` brings with it so"
},
{
"path": "docs/index.md",
"chars": 2741,
"preview": "---\ntitle: Introduction\npermalink: /\nnav_order: 1\nhas_children: false\nhas_toc: false\n---\n\n<img alt=\"fp-ts logo\" src=\"./f"
},
{
"path": "docs/learning-resources.md",
"chars": 3694,
"preview": "---\ntitle: Learning Resources\npermalink: /learning-resources/\nnav_order: 2\nhas_children: false\nhas_toc: false\n---\n\n# Lea"
},
{
"path": "docs/modules/Alt.ts.md",
"chars": 3656,
"preview": "---\ntitle: Alt.ts\nnav_order: 1\nparent: Modules\n---\n\n## Alt overview\n\nThe `Alt` type class identifies an associative oper"
},
{
"path": "docs/modules/Alternative.ts.md",
"chars": 4577,
"preview": "---\ntitle: Alternative.ts\nnav_order: 2\nparent: Modules\n---\n\n## Alternative overview\n\nThe `Alternative` type class extend"
},
{
"path": "docs/modules/Applicative.ts.md",
"chars": 10770,
"preview": "---\ntitle: Applicative.ts\nnav_order: 3\nparent: Modules\n---\n\n## Applicative overview\n\nThe `Applicative` type class extend"
},
{
"path": "docs/modules/Apply.ts.md",
"chars": 23230,
"preview": "---\ntitle: Apply.ts\nnav_order: 4\nparent: Modules\n---\n\n## Apply overview\n\nThe `Apply` class provides the `ap` which is us"
},
{
"path": "docs/modules/Array.ts.md",
"chars": 75491,
"preview": "---\ntitle: Array.ts\nnav_order: 5\nparent: Modules\n---\n\n## Array overview\n\nThe Array module provides tools for working wit"
},
{
"path": "docs/modules/Bifunctor.ts.md",
"chars": 2524,
"preview": "---\ntitle: Bifunctor.ts\nnav_order: 6\nparent: Modules\n---\n\n## Bifunctor overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-d"
},
{
"path": "docs/modules/BooleanAlgebra.ts.md",
"chars": 2185,
"preview": "---\ntitle: BooleanAlgebra.ts\nnav_order: 8\nparent: Modules\n---\n\n## BooleanAlgebra overview\n\nBoolean algebras are Heyting "
},
{
"path": "docs/modules/Bounded.ts.md",
"chars": 1257,
"preview": "---\ntitle: Bounded.ts\nnav_order: 9\nparent: Modules\n---\n\n## Bounded overview\n\nThe `Bounded` type class represents totally"
},
{
"path": "docs/modules/BoundedDistributiveLattice.ts.md",
"chars": 910,
"preview": "---\ntitle: BoundedDistributiveLattice.ts\nnav_order: 10\nparent: Modules\n---\n\n## BoundedDistributiveLattice overview\n\nA `B"
},
{
"path": "docs/modules/BoundedJoinSemilattice.ts.md",
"chars": 576,
"preview": "---\ntitle: BoundedJoinSemilattice.ts\nnav_order: 11\nparent: Modules\n---\n\n## BoundedJoinSemilattice overview\n\nA `BoundedJo"
},
{
"path": "docs/modules/BoundedLattice.ts.md",
"chars": 643,
"preview": "---\ntitle: BoundedLattice.ts\nnav_order: 12\nparent: Modules\n---\n\n## BoundedLattice overview\n\nA `BoundedLattice` must sati"
},
{
"path": "docs/modules/BoundedMeetSemilattice.ts.md",
"chars": 575,
"preview": "---\ntitle: BoundedMeetSemilattice.ts\nnav_order: 13\nparent: Modules\n---\n\n## BoundedMeetSemilattice overview\n\nA `BoundedMe"
},
{
"path": "docs/modules/Category.ts.md",
"chars": 1103,
"preview": "---\ntitle: Category.ts\nnav_order: 14\nparent: Modules\n---\n\n## Category overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-de"
},
{
"path": "docs/modules/Chain.ts.md",
"chars": 5596,
"preview": "---\ntitle: Chain.ts\nnav_order: 15\nparent: Modules\n---\n\n## Chain overview\n\nThe `Chain` type class extends the `Apply` typ"
},
{
"path": "docs/modules/ChainRec.ts.md",
"chars": 2340,
"preview": "---\ntitle: ChainRec.ts\nnav_order: 16\nparent: Modules\n---\n\n## ChainRec overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-de"
},
{
"path": "docs/modules/Choice.ts.md",
"chars": 7113,
"preview": "---\ntitle: Choice.ts\nnav_order: 17\nparent: Modules\n---\n\n## Choice overview\n\nThe `Choice` class extends `Profunctor` with"
},
{
"path": "docs/modules/Comonad.ts.md",
"chars": 1824,
"preview": "---\ntitle: Comonad.ts\nnav_order: 18\nparent: Modules\n---\n\n## Comonad overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delt"
},
{
"path": "docs/modules/Compactable.ts.md",
"chars": 12880,
"preview": "---\ntitle: Compactable.ts\nnav_order: 19\nparent: Modules\n---\n\n## Compactable overview\n\n`Compactable` represents data stru"
},
{
"path": "docs/modules/Console.ts.md",
"chars": 655,
"preview": "---\ntitle: Console.ts\nnav_order: 20\nparent: Modules\n---\n\n## Console overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delt"
},
{
"path": "docs/modules/Const.ts.md",
"chars": 5290,
"preview": "---\ntitle: Const.ts\nnav_order: 21\nparent: Modules\n---\n\n## Const overview\n\nThe `Const` type constructor, which wraps its "
},
{
"path": "docs/modules/Contravariant.ts.md",
"chars": 2263,
"preview": "---\ntitle: Contravariant.ts\nnav_order: 22\nparent: Modules\n---\n\n## Contravariant overview\n\nAdded in v2.0.0\n\n---\n\n<h2 clas"
},
{
"path": "docs/modules/Date.ts.md",
"chars": 1287,
"preview": "---\ntitle: Date.ts\nnav_order: 23\nparent: Modules\n---\n\n## Date overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\">Tab"
},
{
"path": "docs/modules/DistributiveLattice.ts.md",
"chars": 910,
"preview": "---\ntitle: DistributiveLattice.ts\nnav_order: 24\nparent: Modules\n---\n\n## DistributiveLattice overview\n\nA `DistributiveLat"
},
{
"path": "docs/modules/Either.ts.md",
"chars": 40145,
"preview": "---\ntitle: Either.ts\nnav_order: 25\nparent: Modules\n---\n\n## Either overview\n\n```ts\ntype Either<E, A> = Left<E> | Right<A>"
},
{
"path": "docs/modules/EitherT.ts.md",
"chars": 29515,
"preview": "---\ntitle: EitherT.ts\nnav_order: 26\nparent: Modules\n---\n\n## EitherT overview\n\nThe error monad transformer. It can be use"
},
{
"path": "docs/modules/Endomorphism.ts.md",
"chars": 1210,
"preview": "---\ntitle: Endomorphism.ts\nnav_order: 27\nparent: Modules\n---\n\n## Endomorphism overview\n\nAdded in v2.11.0\n\n---\n\n<h2 class"
},
{
"path": "docs/modules/Eq.ts.md",
"chars": 5873,
"preview": "---\ntitle: Eq.ts\nnav_order: 28\nparent: Modules\n---\n\n## Eq overview\n\nThe `Eq` type class represents types which support d"
},
{
"path": "docs/modules/Extend.ts.md",
"chars": 2120,
"preview": "---\ntitle: Extend.ts\nnav_order: 29\nparent: Modules\n---\n\n## Extend overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\""
},
{
"path": "docs/modules/Field.ts.md",
"chars": 1172,
"preview": "---\ntitle: Field.ts\nnav_order: 30\nparent: Modules\n---\n\n## Field overview\n\nAdapted from https://github.com/purescript/pur"
},
{
"path": "docs/modules/Filterable.ts.md",
"chars": 24808,
"preview": "---\ntitle: Filterable.ts\nnav_order: 31\nparent: Modules\n---\n\n## Filterable overview\n\n`Filterable` represents data structu"
},
{
"path": "docs/modules/FilterableWithIndex.ts.md",
"chars": 11346,
"preview": "---\ntitle: FilterableWithIndex.ts\nnav_order: 32\nparent: Modules\n---\n\n## FilterableWithIndex overview\n\nAdded in v2.0.0\n\n-"
},
{
"path": "docs/modules/Foldable.ts.md",
"chars": 17238,
"preview": "---\ntitle: Foldable.ts\nnav_order: 33\nparent: Modules\n---\n\n## Foldable overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-de"
},
{
"path": "docs/modules/FoldableWithIndex.ts.md",
"chars": 13524,
"preview": "---\ntitle: FoldableWithIndex.ts\nnav_order: 34\nparent: Modules\n---\n\n## FoldableWithIndex overview\n\nA `Foldable` with an a"
},
{
"path": "docs/modules/FromEither.ts.md",
"chars": 14906,
"preview": "---\ntitle: FromEither.ts\nnav_order: 35\nparent: Modules\n---\n\n## FromEither overview\n\nThe `FromEither` type class represen"
},
{
"path": "docs/modules/FromIO.ts.md",
"chars": 5635,
"preview": "---\ntitle: FromIO.ts\nnav_order: 36\nparent: Modules\n---\n\n## FromIO overview\n\nLift a computation from the `IO` monad\n\nAdde"
},
{
"path": "docs/modules/FromReader.ts.md",
"chars": 5786,
"preview": "---\ntitle: FromReader.ts\nnav_order: 37\nparent: Modules\n---\n\n## FromReader overview\n\nLift a computation from the `Reader`"
},
{
"path": "docs/modules/FromState.ts.md",
"chars": 5706,
"preview": "---\ntitle: FromState.ts\nnav_order: 38\nparent: Modules\n---\n\n## FromState overview\n\nLift a computation from the `State` mo"
},
{
"path": "docs/modules/FromTask.ts.md",
"chars": 5843,
"preview": "---\ntitle: FromTask.ts\nnav_order: 39\nparent: Modules\n---\n\n## FromTask overview\n\nLift a computation from the `Task` monad"
},
{
"path": "docs/modules/FromThese.ts.md",
"chars": 3033,
"preview": "---\ntitle: FromThese.ts\nnav_order: 40\nparent: Modules\n---\n\n## FromThese overview\n\nThe `FromThese` type class represents "
},
{
"path": "docs/modules/Functor.ts.md",
"chars": 13858,
"preview": "---\ntitle: Functor.ts\nnav_order: 42\nparent: Modules\n---\n\n## Functor overview\n\nA `Functor` is a type constructor which su"
},
{
"path": "docs/modules/FunctorWithIndex.ts.md",
"chars": 8902,
"preview": "---\ntitle: FunctorWithIndex.ts\nnav_order: 43\nparent: Modules\n---\n\n## FunctorWithIndex overview\n\nA `FunctorWithIndex` is "
},
{
"path": "docs/modules/Group.ts.md",
"chars": 545,
"preview": "---\ntitle: Group.ts\nnav_order: 44\nparent: Modules\n---\n\n## Group overview\n\nA `Group` is a `Monoid` with inverses. Instanc"
},
{
"path": "docs/modules/HKT.ts.md",
"chars": 3640,
"preview": "---\ntitle: HKT.ts\nnav_order: 46\nparent: Modules\n---\n\n## HKT overview\n\nType defunctionalization (as describe in [Lightwei"
},
{
"path": "docs/modules/HeytingAlgebra.ts.md",
"chars": 1323,
"preview": "---\ntitle: HeytingAlgebra.ts\nnav_order: 45\nparent: Modules\n---\n\n## HeytingAlgebra overview\n\nHeyting algebras are bounded"
},
{
"path": "docs/modules/IO.ts.md",
"chars": 8768,
"preview": "---\ntitle: IO.ts\nnav_order: 50\nparent: Modules\n---\n\n## IO overview\n\n```ts\ninterface IO<A> {\n (): A\n}\n```\n\n`IO<A>` repre"
},
{
"path": "docs/modules/IOEither.ts.md",
"chars": 34700,
"preview": "---\ntitle: IOEither.ts\nnav_order: 51\nparent: Modules\n---\n\n## IOEither overview\n\n`IOEither<E, A>` represents a synchronou"
},
{
"path": "docs/modules/IOOption.ts.md",
"chars": 19297,
"preview": "---\ntitle: IOOption.ts\nnav_order: 52\nparent: Modules\n---\n\n## IOOption overview\n\n`IOOption<A>` represents a synchronous c"
},
{
"path": "docs/modules/IORef.ts.md",
"chars": 1138,
"preview": "---\ntitle: IORef.ts\nnav_order: 53\nparent: Modules\n---\n\n## IORef overview\n\nMutable references in the `IO` monad\n\nAdded in"
},
{
"path": "docs/modules/Identity.ts.md",
"chars": 8062,
"preview": "---\ntitle: Identity.ts\nnav_order: 47\nparent: Modules\n---\n\n## Identity overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-de"
},
{
"path": "docs/modules/Invariant.ts.md",
"chars": 2220,
"preview": "---\ntitle: Invariant.ts\nnav_order: 49\nparent: Modules\n---\n\n## Invariant overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-"
},
{
"path": "docs/modules/JoinSemilattice.ts.md",
"chars": 719,
"preview": "---\ntitle: JoinSemilattice.ts\nnav_order: 54\nparent: Modules\n---\n\n## JoinSemilattice overview\n\nA join-semilattice (or upp"
},
{
"path": "docs/modules/Json.ts.md",
"chars": 1934,
"preview": "---\ntitle: Json.ts\nnav_order: 55\nparent: Modules\n---\n\n## Json overview\n\nAdded in v2.10.0\n\n---\n\n<h2 class=\"text-delta\">Ta"
},
{
"path": "docs/modules/Lattice.ts.md",
"chars": 566,
"preview": "---\ntitle: Lattice.ts\nnav_order: 56\nparent: Modules\n---\n\n## Lattice overview\n\nA `Lattice` must satisfy the following in "
},
{
"path": "docs/modules/Magma.ts.md",
"chars": 2002,
"preview": "---\ntitle: Magma.ts\nnav_order: 57\nparent: Modules\n---\n\n## Magma overview\n\nA `Magma` is a pair `(A, concat)` in which `A`"
},
{
"path": "docs/modules/Map.ts.md",
"chars": 14727,
"preview": "---\ntitle: Map.ts\nnav_order: 58\nparent: Modules\n---\n\n## Map overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\">Table"
},
{
"path": "docs/modules/MeetSemilattice.ts.md",
"chars": 722,
"preview": "---\ntitle: MeetSemilattice.ts\nnav_order: 59\nparent: Modules\n---\n\n## MeetSemilattice overview\n\nA meet-semilattice (or low"
},
{
"path": "docs/modules/Monad.ts.md",
"chars": 2028,
"preview": "---\ntitle: Monad.ts\nnav_order: 60\nparent: Modules\n---\n\n## Monad overview\n\nThe `Monad` type class combines the operations"
},
{
"path": "docs/modules/MonadIO.ts.md",
"chars": 1572,
"preview": "---\ntitle: MonadIO.ts\nnav_order: 61\nparent: Modules\n---\n\n## MonadIO overview\n\nLift a computation from the `IO` monad\n\nAd"
},
{
"path": "docs/modules/MonadTask.ts.md",
"chars": 1662,
"preview": "---\ntitle: MonadTask.ts\nnav_order: 62\nparent: Modules\n---\n\n## MonadTask overview\n\nLift a computation from the `Task` mon"
},
{
"path": "docs/modules/MonadThrow.ts.md",
"chars": 2139,
"preview": "---\ntitle: MonadThrow.ts\nnav_order: 63\nparent: Modules\n---\n\n## MonadThrow overview\n\nThe `MonadThrow` type class represen"
},
{
"path": "docs/modules/Monoid.ts.md",
"chars": 7419,
"preview": "---\ntitle: Monoid.ts\nnav_order: 64\nparent: Modules\n---\n\n## Monoid overview\n\n`Monoid` extends the power of `Semigroup` by"
},
{
"path": "docs/modules/NaturalTransformation.ts.md",
"chars": 6410,
"preview": "---\ntitle: NaturalTransformation.ts\nnav_order: 65\nparent: Modules\n---\n\n## NaturalTransformation overview\n\nA type for nat"
},
{
"path": "docs/modules/NonEmptyArray.ts.md",
"chars": 27733,
"preview": "---\ntitle: NonEmptyArray.ts\nnav_order: 66\nparent: Modules\n---\n\n## NonEmptyArray overview\n\nData structure which represent"
},
{
"path": "docs/modules/Option.ts.md",
"chars": 33088,
"preview": "---\ntitle: Option.ts\nnav_order: 68\nparent: Modules\n---\n\n## Option overview\n\n```ts\ntype Option<A> = None | Some<A>\n```\n\n`"
},
{
"path": "docs/modules/OptionT.ts.md",
"chars": 25635,
"preview": "---\ntitle: OptionT.ts\nnav_order: 69\nparent: Modules\n---\n\n## OptionT overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delt"
},
{
"path": "docs/modules/Ord.ts.md",
"chars": 10730,
"preview": "---\ntitle: Ord.ts\nnav_order: 70\nparent: Modules\n---\n\n## Ord overview\n\nThe `Ord` type class represents types which suppor"
},
{
"path": "docs/modules/Ordering.ts.md",
"chars": 2441,
"preview": "---\ntitle: Ordering.ts\nnav_order: 71\nparent: Modules\n---\n\n## Ordering overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-de"
},
{
"path": "docs/modules/Pointed.ts.md",
"chars": 1808,
"preview": "---\ntitle: Pointed.ts\nnav_order: 73\nparent: Modules\n---\n\n## Pointed overview\n\nAdded in v2.10.0\n\n---\n\n<h2 class=\"text-del"
},
{
"path": "docs/modules/Predicate.ts.md",
"chars": 2190,
"preview": "---\ntitle: Predicate.ts\nnav_order: 74\nparent: Modules\n---\n\n## Predicate overview\n\nAdded in v2.11.0\n\n---\n\n<h2 class=\"text"
},
{
"path": "docs/modules/Profunctor.ts.md",
"chars": 2077,
"preview": "---\ntitle: Profunctor.ts\nnav_order: 75\nparent: Modules\n---\n\n## Profunctor overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"tex"
},
{
"path": "docs/modules/Random.ts.md",
"chars": 1595,
"preview": "---\ntitle: Random.ts\nnav_order: 76\nparent: Modules\n---\n\n## Random overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\""
},
{
"path": "docs/modules/Reader.ts.md",
"chars": 15843,
"preview": "---\ntitle: Reader.ts\nnav_order: 77\nparent: Modules\n---\n\n## Reader overview\n\nThe `Reader` monad (also called the Environm"
},
{
"path": "docs/modules/ReaderEither.ts.md",
"chars": 35438,
"preview": "---\ntitle: ReaderEither.ts\nnav_order: 78\nparent: Modules\n---\n\n## ReaderEither overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class="
},
{
"path": "docs/modules/ReaderIO.ts.md",
"chars": 15591,
"preview": "---\ntitle: ReaderIO.ts\nnav_order: 79\nparent: Modules\n---\n\n## ReaderIO overview\n\nAdded in v2.13.0\n\n---\n\n<h2 class=\"text-d"
},
{
"path": "docs/modules/ReaderT.ts.md",
"chars": 13341,
"preview": "---\ntitle: ReaderT.ts\nnav_order: 80\nparent: Modules\n---\n\n## ReaderT overview\n\nThe reader monad transformer, which adds a"
},
{
"path": "docs/modules/ReaderTask.ts.md",
"chars": 25233,
"preview": "---\ntitle: ReaderTask.ts\nnav_order: 81\nparent: Modules\n---\n\n## ReaderTask overview\n\nAdded in v2.3.0\n\n---\n\n<h2 class=\"tex"
},
{
"path": "docs/modules/ReaderTaskEither.ts.md",
"chars": 61584,
"preview": "---\ntitle: ReaderTaskEither.ts\nnav_order: 82\nparent: Modules\n---\n\n## ReaderTaskEither overview\n\nAdded in v2.0.0\n\n---\n\n<h"
},
{
"path": "docs/modules/ReadonlyArray.ts.md",
"chars": 58180,
"preview": "---\ntitle: ReadonlyArray.ts\nnav_order: 83\nparent: Modules\n---\n\n## ReadonlyArray overview\n\nAdded in v2.5.0\n\n---\n\n<h2 clas"
},
{
"path": "docs/modules/ReadonlyMap.ts.md",
"chars": 16942,
"preview": "---\ntitle: ReadonlyMap.ts\nnav_order: 84\nparent: Modules\n---\n\n## ReadonlyMap overview\n\nAdded in v2.5.0\n\n---\n\n<h2 class=\"t"
},
{
"path": "docs/modules/ReadonlyNonEmptyArray.ts.md",
"chars": 31045,
"preview": "---\ntitle: ReadonlyNonEmptyArray.ts\nnav_order: 85\nparent: Modules\n---\n\n## ReadonlyNonEmptyArray overview\n\nData structure"
},
{
"path": "docs/modules/ReadonlyRecord.ts.md",
"chars": 48070,
"preview": "---\ntitle: ReadonlyRecord.ts\nnav_order: 86\nparent: Modules\n---\n\n## ReadonlyRecord overview\n\nThe `ReadonlyRecord.ts` modu"
},
{
"path": "docs/modules/ReadonlySet.ts.md",
"chars": 9084,
"preview": "---\ntitle: ReadonlySet.ts\nnav_order: 87\nparent: Modules\n---\n\n## ReadonlySet overview\n\nAdded in v2.5.0\n\n---\n\n<h2 class=\"t"
},
{
"path": "docs/modules/ReadonlyTuple.ts.md",
"chars": 6334,
"preview": "---\ntitle: ReadonlyTuple.ts\nnav_order: 88\nparent: Modules\n---\n\n## ReadonlyTuple overview\n\nAdded in v2.5.0\n\n---\n\n<h2 clas"
},
{
"path": "docs/modules/Record.ts.md",
"chars": 43831,
"preview": "---\ntitle: Record.ts\nnav_order: 89\nparent: Modules\n---\n\n## Record overview\n\nThe `Record` module enables dealing with Typ"
},
{
"path": "docs/modules/Refinement.ts.md",
"chars": 2029,
"preview": "---\ntitle: Refinement.ts\nnav_order: 90\nparent: Modules\n---\n\n## Refinement overview\n\nAdded in v2.11.0\n\n---\n\n<h2 class=\"te"
},
{
"path": "docs/modules/Ring.ts.md",
"chars": 2156,
"preview": "---\ntitle: Ring.ts\nnav_order: 91\nparent: Modules\n---\n\n## Ring overview\n\nThe `Ring` class is for types that support addit"
},
{
"path": "docs/modules/Semigroup.ts.md",
"chars": 9573,
"preview": "---\ntitle: Semigroup.ts\nnav_order: 92\nparent: Modules\n---\n\n## Semigroup overview\n\nIf a type `A` can form a `Semigroup` i"
},
{
"path": "docs/modules/Semigroupoid.ts.md",
"chars": 1992,
"preview": "---\ntitle: Semigroupoid.ts\nnav_order: 93\nparent: Modules\n---\n\n## Semigroupoid overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class="
},
{
"path": "docs/modules/Semiring.ts.md",
"chars": 1624,
"preview": "---\ntitle: Semiring.ts\nnav_order: 94\nparent: Modules\n---\n\n## Semiring overview\n\nThe `Semiring` class is for types that s"
},
{
"path": "docs/modules/Separated.ts.md",
"chars": 2792,
"preview": "---\ntitle: Separated.ts\nnav_order: 95\nparent: Modules\n---\n\n## Separated overview\n\n```ts\ninterface Separated<E, A> {\n re"
},
{
"path": "docs/modules/Set.ts.md",
"chars": 7852,
"preview": "---\ntitle: Set.ts\nnav_order: 96\nparent: Modules\n---\n\n## Set overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\">Table"
},
{
"path": "docs/modules/Show.ts.md",
"chars": 2228,
"preview": "---\ntitle: Show.ts\nnav_order: 97\nparent: Modules\n---\n\n## Show overview\n\nThe `Show` type class represents those types whi"
},
{
"path": "docs/modules/State.ts.md",
"chars": 8801,
"preview": "---\ntitle: State.ts\nnav_order: 98\nparent: Modules\n---\n\n## State overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\">T"
},
{
"path": "docs/modules/StateReaderTaskEither.ts.md",
"chars": 42723,
"preview": "---\ntitle: StateReaderTaskEither.ts\nnav_order: 99\nparent: Modules\n---\n\n## StateReaderTaskEither overview\n\nAdded in v2.0."
},
{
"path": "docs/modules/StateT.ts.md",
"chars": 15194,
"preview": "---\ntitle: StateT.ts\nnav_order: 100\nparent: Modules\n---\n\n## StateT overview\n\nThe state monad transformer. It can be used"
},
{
"path": "docs/modules/Store.ts.md",
"chars": 4141,
"preview": "---\ntitle: Store.ts\nnav_order: 101\nparent: Modules\n---\n\n## Store overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\">"
},
{
"path": "docs/modules/Strong.ts.md",
"chars": 7156,
"preview": "---\ntitle: Strong.ts\nnav_order: 103\nparent: Modules\n---\n\n## Strong overview\n\nThe `Strong` class extends `Profunctor` wit"
},
{
"path": "docs/modules/Task.ts.md",
"chars": 14698,
"preview": "---\ntitle: Task.ts\nnav_order: 105\nparent: Modules\n---\n\n## Task overview\n\n```ts\ninterface Task<A> {\n (): Promise<A>\n}\n``"
},
{
"path": "docs/modules/TaskEither.ts.md",
"chars": 46954,
"preview": "---\ntitle: TaskEither.ts\nnav_order: 106\nparent: Modules\n---\n\n## TaskEither overview\n\n```ts\ninterface TaskEither<E, A> ex"
},
{
"path": "docs/modules/TaskOption.ts.md",
"chars": 24127,
"preview": "---\ntitle: TaskOption.ts\nnav_order: 107\nparent: Modules\n---\n\n## TaskOption overview\n\nAdded in v2.10.0\n\n---\n\n<h2 class=\"t"
},
{
"path": "docs/modules/TaskThese.ts.md",
"chars": 12930,
"preview": "---\ntitle: TaskThese.ts\nnav_order: 108\nparent: Modules\n---\n\n## TaskThese overview\n\nAdded in v2.4.0\n\n---\n\n<h2 class=\"text"
},
{
"path": "docs/modules/These.ts.md",
"chars": 15386,
"preview": "---\ntitle: These.ts\nnav_order: 109\nparent: Modules\n---\n\n## These overview\n\nA data structure providing \"inclusive-or\" as "
},
{
"path": "docs/modules/TheseT.ts.md",
"chars": 20270,
"preview": "---\ntitle: TheseT.ts\nnav_order: 110\nparent: Modules\n---\n\n## TheseT overview\n\nAdded in v2.4.0\n\n---\n\n<h2 class=\"text-delta"
},
{
"path": "docs/modules/Traced.ts.md",
"chars": 2592,
"preview": "---\ntitle: Traced.ts\nnav_order: 111\nparent: Modules\n---\n\n## Traced overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta"
},
{
"path": "docs/modules/Traversable.ts.md",
"chars": 23826,
"preview": "---\ntitle: Traversable.ts\nnav_order: 112\nparent: Modules\n---\n\n## Traversable overview\n\n`Traversable` represents data str"
},
{
"path": "docs/modules/TraversableWithIndex.ts.md",
"chars": 8198,
"preview": "---\ntitle: TraversableWithIndex.ts\nnav_order: 113\nparent: Modules\n---\n\n## TraversableWithIndex overview\n\nA `Traversable`"
},
{
"path": "docs/modules/Tree.ts.md",
"chars": 12551,
"preview": "---\ntitle: Tree.ts\nnav_order: 114\nparent: Modules\n---\n\n## Tree overview\n\nMulti-way trees (aka rose trees) and forests, w"
},
{
"path": "docs/modules/Tuple.ts.md",
"chars": 5841,
"preview": "---\ntitle: Tuple.ts\nnav_order: 115\nparent: Modules\n---\n\n## Tuple overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\">"
},
{
"path": "docs/modules/Unfoldable.ts.md",
"chars": 2241,
"preview": "---\ntitle: Unfoldable.ts\nnav_order: 116\nparent: Modules\n---\n\n## Unfoldable overview\n\nThis class identifies data structur"
},
{
"path": "docs/modules/ValidationT.ts.md",
"chars": 2697,
"preview": "---\ntitle: ValidationT.ts\nnav_order: 117\nparent: Modules\n---\n\n## ValidationT overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\""
},
{
"path": "docs/modules/Witherable.ts.md",
"chars": 25703,
"preview": "---\ntitle: Witherable.ts\nnav_order: 119\nparent: Modules\n---\n\n## Witherable overview\n\n`Witherable` represents data struct"
},
{
"path": "docs/modules/Writer.ts.md",
"chars": 4166,
"preview": "---\ntitle: Writer.ts\nnav_order: 120\nparent: Modules\n---\n\n## Writer overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta"
},
{
"path": "docs/modules/WriterT.ts.md",
"chars": 7740,
"preview": "---\ntitle: WriterT.ts\nnav_order: 121\nparent: Modules\n---\n\n## WriterT overview\n\nAdded in v2.4.0\n\n---\n\n<h2 class=\"text-del"
},
{
"path": "docs/modules/Zero.ts.md",
"chars": 2648,
"preview": "---\ntitle: Zero.ts\nnav_order: 122\nparent: Modules\n---\n\n## Zero overview\n\nAdded in v2.11.0\n\n---\n\n<h2 class=\"text-delta\">T"
},
{
"path": "docs/modules/boolean.ts.md",
"chars": 3963,
"preview": "---\ntitle: boolean.ts\nnav_order: 7\nparent: Modules\n---\n\n## boolean overview\n\nAdded in v2.2.0\n\n---\n\n<h2 class=\"text-delta"
},
{
"path": "docs/modules/function.ts.md",
"chars": 15158,
"preview": "---\ntitle: function.ts\nnav_order: 41\nparent: Modules\n---\n\n## function overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-de"
},
{
"path": "docs/modules/index.md",
"chars": 222,
"preview": "---\ntitle: Modules\npermalink: /modules/\nnav_order: 4\nhas_children: true\nhas_toc: true\n---\n\n# Modules\n\nThis section provi"
},
{
"path": "docs/modules/index.ts.md",
"chars": 16561,
"preview": "---\ntitle: index.ts\nnav_order: 48\nparent: Modules\n---\n\n## index overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-delta\">T"
},
{
"path": "docs/modules/number.ts.md",
"chars": 2397,
"preview": "---\ntitle: number.ts\nnav_order: 67\nparent: Modules\n---\n\n## number overview\n\nAdded in v2.10.0\n\n---\n\n<h2 class=\"text-delta"
},
{
"path": "docs/modules/pipeable.ts.md",
"chars": 98237,
"preview": "---\ntitle: pipeable.ts\nnav_order: 72\nparent: Modules\n---\n\n## pipeable overview\n\nAdded in v2.0.0\n\n---\n\n<h2 class=\"text-de"
},
{
"path": "docs/modules/string.ts.md",
"chars": 6575,
"preview": "---\ntitle: string.ts\nnav_order: 102\nparent: Modules\n---\n\n## string overview\n\nAdded in v2.10.0\n\n---\n\n<h2 class=\"text-delt"
},
{
"path": "docs/modules/struct.ts.md",
"chars": 1366,
"preview": "---\ntitle: struct.ts\nnav_order: 104\nparent: Modules\n---\n\n## struct overview\n\nAdded in v2.10.0\n\n---\n\n<h2 class=\"text-delt"
},
{
"path": "docs/modules/void.ts.md",
"chars": 445,
"preview": "---\ntitle: void.ts\nnav_order: 118\nparent: Modules\n---\n\n## void overview\n\nAdded in v2.11.0\n\n---\n\n<h2 class=\"text-delta\">T"
},
{
"path": "docs-ts.json",
"chars": 37,
"preview": "{\n \"exclude\": [\"src/internal.ts\"]\n}\n"
},
{
"path": "dtslint/Applicative.ts",
"chars": 426,
"preview": "import * as _ from '../src/Applicative'\nimport * as E from '../src/Either'\nimport * as R from '../src/Reader'\nimport * a"
},
{
"path": "dtslint/Apply.ts",
"chars": 2736,
"preview": "import * as _ from '../src/Apply'\nimport * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as "
},
{
"path": "dtslint/Array.ts",
"chars": 5871,
"preview": "import * as _ from '../src/Array'\nimport * as E from '../src/Either'\nimport { identity, pipe } from '../src/function'\nim"
},
{
"path": "dtslint/Console.ts",
"chars": 529,
"preview": "import * as _ from '../src/Console'\nimport { flow, pipe } from '../src/function'\nimport * as TE from '../src/TaskEither'"
},
{
"path": "dtslint/Const.ts",
"chars": 160,
"preview": "import * as _ from '../src/Const'\n\n//\n// contramap\n//\n\n_.const_.contramap(_.make<boolean>(true), (s: string) => s.length"
},
{
"path": "dtslint/Either.ts",
"chars": 2947,
"preview": "import * as _ from '../src/Either'\nimport { flow, identity, pipe } from '../src/function'\nimport * as RA from '../src/Re"
},
{
"path": "dtslint/Eq.ts",
"chars": 493,
"preview": "import * as B from '../src/boolean'\nimport * as _ from '../src/Eq'\nimport * as N from '../src/number'\nimport * as S from"
},
{
"path": "dtslint/Functor.ts",
"chars": 1133,
"preview": "import * as E from '../src/Either'\nimport * as _ from '../src/Functor'\nimport * as RTE from '../src/ReaderTaskEither'\nim"
},
{
"path": "dtslint/IO.ts",
"chars": 228,
"preview": "import { pipe } from '../src/function'\nimport * as _ from '../src/IO'\n\n//\n// Do\n//\n\n// $ExpectType IO<{ readonly a1: num"
},
{
"path": "dtslint/IOEither.ts",
"chars": 2283,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as IO from '../src/IO'\nimport * as _ "
},
{
"path": "dtslint/Identity.ts",
"chars": 230,
"preview": "import { pipe } from '../src/function'\nimport * as _ from '../src/Identity'\n\n//\n// Do\n//\n\n// $ExpectType { readonly a1: "
},
{
"path": "dtslint/Json.ts",
"chars": 840,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as _ from '../src/Json'\n\n//\n// string"
},
{
"path": "dtslint/Map.ts",
"chars": 3565,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as _ from '../src/Map'\nimport * as N "
},
{
"path": "dtslint/Monoid.ts",
"chars": 558,
"preview": "import * as B from '../src/boolean'\nimport * as _ from '../src/Monoid'\nimport * as N from '../src/number'\nimport * as S "
},
{
"path": "dtslint/NonEmptyArray.ts",
"chars": 2911,
"preview": "import { pipe } from '../src/function'\nimport * as _ from '../src/NonEmptyArray'\nimport { Ord } from '../src/Ord'\n\ndecla"
},
{
"path": "dtslint/Option.ts",
"chars": 2094,
"preview": "import { flow, pipe } from '../src/function'\nimport * as _ from '../src/Option'\n\n//\n// getOrElseW\n//\n\n// $ExpectType str"
},
{
"path": "dtslint/Ord.ts",
"chars": 362,
"preview": "import * as B from '../src/boolean'\nimport * as N from '../src/number'\nimport * as _ from '../src/Ord'\nimport * as S fro"
},
{
"path": "dtslint/Reader.ts",
"chars": 450,
"preview": "import { pipe } from '../src/function'\nimport * as _ from '../src/Reader'\n\n//\n// chainW\n//\n\n// $ExpectType Reader<{ a: s"
},
{
"path": "dtslint/ReaderEither.ts",
"chars": 3104,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as R from '../src/Reader'\nimport * as"
},
{
"path": "dtslint/ReaderT.ts",
"chars": 1140,
"preview": "import * as _ from '../src/ReaderT'\nimport * as RTE from '../src/ReaderTaskEither'\nimport * as SRTE from '../src/StateRe"
},
{
"path": "dtslint/ReaderTask.ts",
"chars": 1442,
"preview": "import { pipe } from '../src/function'\nimport * as RIO from '../src/ReaderIO'\nimport * as _ from '../src/ReaderTask'\n\nin"
},
{
"path": "dtslint/ReaderTaskEither.ts",
"chars": 6837,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as IOE from '../src/IOEither'\nimport "
},
{
"path": "dtslint/ReadonlyArray.ts",
"chars": 7395,
"preview": "import * as E from '../src/Either'\nimport { identity, pipe } from '../src/function'\nimport * as N from '../src/number'\ni"
},
{
"path": "dtslint/ReadonlyMap.ts",
"chars": 3839,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as N from '../src/number'\nimport * as"
},
{
"path": "dtslint/ReadonlyNonEmptyArray.ts",
"chars": 3402,
"preview": "import { pipe } from '../src/function'\nimport { Ord } from '../src/Ord'\nimport * as _ from '../src/ReadonlyNonEmptyArray"
},
{
"path": "dtslint/ReadonlyRecord.ts",
"chars": 9558,
"preview": "import * as E from '../src/Either'\nimport { Foldable } from '../src/Foldable'\nimport { identity, pipe } from '../src/fun"
},
{
"path": "dtslint/ReadonlySet.ts",
"chars": 2325,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as N from '../src/number'\nimport * as"
},
{
"path": "dtslint/Record.ts",
"chars": 8367,
"preview": "import * as A from '../src/Array'\nimport * as E from '../src/Either'\nimport { Foldable } from '../src/Foldable'\nimport {"
},
{
"path": "dtslint/Ring.ts",
"chars": 287,
"preview": "import * as N from '../src/number'\nimport * as _ from '../src/Ring'\n\n//\n// tuple\n//\n\n// $ExpectType Ring<readonly [numbe"
},
{
"path": "dtslint/Semigroup.ts",
"chars": 757,
"preview": "import * as B from '../src/boolean'\nimport * as N from '../src/number'\nimport * as _ from '../src/Semigroup'\nimport * as"
},
{
"path": "dtslint/Set.ts",
"chars": 2095,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as N from '../src/number'\nimport * as"
},
{
"path": "dtslint/Show.ts",
"chars": 394,
"preview": "import * as B from '../src/boolean'\nimport * as N from '../src/number'\nimport * as _ from '../src/Show'\nimport * as S fr"
},
{
"path": "dtslint/StateReaderTaskEither.ts",
"chars": 2462,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as IOE from '../src/IOEither'\nimport "
},
{
"path": "dtslint/Task.ts",
"chars": 232,
"preview": "import { pipe } from '../src/function'\nimport * as _ from '../src/Task'\n\n//\n// Do\n//\n\n// $ExpectType Task<{ readonly a1:"
},
{
"path": "dtslint/TaskEither.ts",
"chars": 3071,
"preview": "import * as E from '../src/Either'\nimport { pipe } from '../src/function'\nimport * as IO from '../src/IO'\nimport * as IO"
},
{
"path": "dtslint/TaskOption.ts",
"chars": 1824,
"preview": "import { pipe } from '../src/function'\nimport * as TE from '../src/TaskEither'\nimport * as _ from '../src/TaskOption'\n\nd"
},
{
"path": "dtslint/Traversable.ts",
"chars": 586,
"preview": "import * as E from '../src/Either'\nimport * as RA from '../src/ReadonlyArray'\nimport * as TE from '../src/TaskEither'\nim"
},
{
"path": "dtslint/Tree.ts",
"chars": 232,
"preview": "import { pipe } from '../src/function'\nimport * as _ from '../src/Tree'\n\n//\n// Do\n//\n\n// $ExpectType Tree<{ readonly a1:"
},
{
"path": "dtslint/constrained.ts",
"chars": 5867,
"preview": "import { Alt2C, Alt3C } from '../src/Alt'\nimport { Alternative2C, Alternative3C } from '../src/Alternative'\nimport { App"
},
{
"path": "dtslint/function.ts",
"chars": 779,
"preview": "import * as _ from '../src/function'\nimport * as RA from '../src/ReadonlyArray'\n\n//\n// flip\n//\n\n// should handle generic"
},
{
"path": "dtslint/index.d.ts",
"chars": 0,
"preview": ""
},
{
"path": "dtslint/index.ts",
"chars": 442,
"preview": "import * as _ from '../src/HKT'\nimport * as T from '../src/Task'\n\n// issue #536\nexport function testIssue536<F extends _"
},
{
"path": "dtslint/pipeable.ts",
"chars": 7667,
"preview": "import { Chain3C } from '../src/Chain'\nimport * as Eq from '../src/Eq'\nimport * as O from '../src/Option'\nimport * as P "
},
{
"path": "dtslint/tsconfig.json",
"chars": 162,
"preview": "{\n \"extends\": \"../tsconfig.json\",\n \"include\": [\".\"],\n \"compilerOptions\": {\n \"incremental\": false,\n \"composite\":"
},
{
"path": "examples/fp-ts-to-the-max-I.ts",
"chars": 2218,
"preview": "import { createInterface } from 'readline'\n\nimport { log } from '../src/Console'\nimport { flow, pipe } from '../src/func"
},
{
"path": "examples/fp-ts-to-the-max-II.ts",
"chars": 5189,
"preview": "import * as assert from 'assert'\nimport { createInterface } from 'readline'\n\nimport { apS as apS_ } from '../src/Apply'\n"
},
{
"path": "examples/tsconfig.json",
"chars": 108,
"preview": "{\n \"extends\": \"../tsconfig.json\",\n \"compilerOptions\": {\n \"noEmit\": true\n },\n \"include\": [\"./**/*\"]\n}\n"
},
{
"path": "package.json",
"chars": 2572,
"preview": "{\n \"name\": \"fp-ts\",\n \"version\": \"2.16.11\",\n \"description\": \"Functional programming in TypeScript\",\n \"main\": \"./lib/i"
},
{
"path": "perf/Either/sequenceArray.ts",
"chars": 957,
"preview": "import * as Benchmark from 'benchmark'\nimport * as RNEA from '../../src/ReadonlyNonEmptyArray'\nimport * as _ from '../.."
}
]
// ... and 229 more files (download for full content)
About this extraction
This page contains the full source code of the gcanti/fp-ts GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 429 files (3.9 MB), approximately 1.0M tokens, and a symbol index with 1439 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.