-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
41 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,35 @@ Fantasy Land Monad and Alternative instances for return values from | |
|
||
[hook]: https://github.com/fluture-js/Fluture#hook | ||
|
||
## Usage Example | ||
## Usage | ||
|
||
### Node | ||
|
||
```console | ||
$ npm install --save fluture-project | ||
``` | ||
|
||
On Node 12 and up, this module can be loaded directly with `import` or | ||
`require`. On Node versions below 12, `require` or the [esm][]-loader can | ||
be used. | ||
|
||
### Deno and Modern Browsers | ||
|
||
You can load the EcmaScript module from various content delivery networks: | ||
|
||
- [Skypack](https://cdn.skypack.dev/[email protected]) | ||
- [JSPM](https://jspm.dev/[email protected]) | ||
- [jsDelivr](https://cdn.jsdelivr.net/npm/[email protected]/+esm) | ||
|
||
### Old Browsers and Code Pens | ||
|
||
There's a [UMD][] file included in the NPM package, also available via | ||
jsDelivr: https://cdn.jsdelivr.net/npm/[email protected]/dist/umd.js | ||
|
||
This file adds `flutureProject` to the global scope, or use CommonJS/AMD | ||
when available. | ||
|
||
### Usage Example | ||
|
||
```js | ||
import {Future, node, fork} from 'fluture/index.js'; | ||
|
@@ -38,7 +66,7 @@ fork (console.error) | |
|
||
## API | ||
|
||
#### <a name="Hook" href="https://github.com/fluture-js/fluture-hooks/blob/v2.0.2/index.js#L76">`Hook :: ((b -> a) -> a) -> Hook a b`</a> | ||
#### <a name="Hook" href="https://github.com/fluture-js/fluture-hooks/blob/v2.1.0/index.js#L104">`Hook :: ((b -> a) -> a) -> Hook a b`</a> | ||
|
||
Tags a function awaiting a callback (such as the value returned by | ||
[Fluture's `hook`][hook]) as a "Hook". | ||
|
@@ -49,15 +77,15 @@ Tags a function awaiting a callback (such as the value returned by | |
Hook (Future.hook (myResourceAcquisition) (myResourceDisposal)); | ||
``` | ||
|
||
#### <a name="hook" href="https://github.com/fluture-js/fluture-hooks/blob/v2.0.2/index.js#L110">`hook :: Future a b -> (b -> Future c d) -> Hook (Future a e) b`</a> | ||
#### <a name="hook" href="https://github.com/fluture-js/fluture-hooks/blob/v2.1.0/index.js#L138">`hook :: Future a b -> (b -> Future c d) -> Hook (Future a e) b`</a> | ||
|
||
`hook (m) (f)` is the equivalent of `Hook (Future.hook (m) (f))`. | ||
|
||
#### <a name="acquire" href="https://github.com/fluture-js/fluture-hooks/blob/v2.0.2/index.js#L115">`acquire :: Future a b -> Hook (Future a d) b`</a> | ||
#### <a name="acquire" href="https://github.com/fluture-js/fluture-hooks/blob/v2.1.0/index.js#L143">`acquire :: Future a b -> Hook (Future a d) b`</a> | ||
|
||
Creates a Hook without the need for a disposal function. | ||
|
||
#### <a name="runHook" href="https://github.com/fluture-js/fluture-hooks/blob/v2.0.2/index.js#L120">`runHook :: Hook b a -> (a -> b) -> b`</a> | ||
#### <a name="runHook" href="https://github.com/fluture-js/fluture-hooks/blob/v2.1.0/index.js#L148">`runHook :: Hook b a -> (a -> b) -> b`</a> | ||
|
||
Given a Hook and a callback, runs the Hook, returning the callbacks' return | ||
value. For Hooks created from Fluture's hook, this means a Future is | ||
|
@@ -66,22 +94,25 @@ retured. | |
This function can also be thought of as "untagging" a [`Hook`](#Hook): | ||
`runHook (Hook (h)) = h`. | ||
|
||
#### <a name="ParallelHook" href="https://github.com/fluture-js/fluture-hooks/blob/v2.0.2/index.js#L130">`ParallelHook :: Hook a b -> ParallelHook a b`</a> | ||
#### <a name="ParallelHook" href="https://github.com/fluture-js/fluture-hooks/blob/v2.1.0/index.js#L158">`ParallelHook :: Hook a b -> ParallelHook a b`</a> | ||
|
||
Construct a ParallelHook using a Hook. | ||
|
||
`ParallelHook a` has a Functor instance, and `ParallelHook (Future a b)` | ||
has an Applicative instance with parallel behaviour. | ||
|
||
#### <a name="sequential" href="https://github.com/fluture-js/fluture-hooks/blob/v2.0.2/index.js#L228">`sequential :: ParallelHook a b -> Hook a b`</a> | ||
#### <a name="sequential" href="https://github.com/fluture-js/fluture-hooks/blob/v2.1.0/index.js#L256">`sequential :: ParallelHook a b -> Hook a b`</a> | ||
|
||
Converts a ParallelHook to a normal Hook. | ||
|
||
#### <a name="hookAll" href="https://github.com/fluture-js/fluture-hooks/blob/v2.0.2/index.js#L235">`hookAll :: Array (Hook (Future a b) c) -> Hook (Future a b) (Array c)`</a> | ||
#### <a name="hookAll" href="https://github.com/fluture-js/fluture-hooks/blob/v2.1.0/index.js#L263">`hookAll :: Array (Hook (Future a b) c) -> Hook (Future a b) (Array c)`</a> | ||
|
||
Combines resources from many hooks into a single hook in parallel, given | ||
that the eventual consumption of this new hook will return a Future. | ||
|
||
`hookAll (hooks)` is the equivalent of | ||
`sequential (sequence (ParallelHook) (map (ParallelHook) (hooks)))` for all | ||
`hooks :: Array (Hook (Future a b) c)`. | ||
|
||
[esm]: https://github.com/standard-things/esm | ||
[UMD]: https://github.com/umdjs/umd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters