Skip to content

Commit

Permalink
Version 2.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Avaq committed Apr 4, 2021
1 parent 2ad8a3d commit fe2e829
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 10 deletions.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
The MIT License (MIT)
Copyright (c) 2020 Aldwin Vlasblom
Copyright (c) 2021 Aldwin Vlasblom

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
Expand Down
47 changes: 39 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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".
Expand All @@ -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
Expand All @@ -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
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fluture-hooks",
"version": "2.0.2",
"version": "2.1.0",
"description": "Fantasy Land Monad and Alternative instances for Fluture's hook",
"keywords": [
"fluture",
Expand Down

0 comments on commit fe2e829

Please sign in to comment.