Sub-project of Funfix defining monadic data types for dealing with laziness and side effects.
Eval | lawful, lazy, monadic data type, that can control evaluation, inspired by the Eval type in Typelevel Cats and by the Coeval type in Monix, a more simple IO -like type that can only handle immediate execution, no async boundaries, no error handling, not being meant for suspending side effects. |
IO | lawful, lazy, monadic data type, capable of expressing and composing side effectful actions, including asynchronous, being the most potent and capable alternative to JavaScript's Promise , inspired by Haskell's IO and by the Monix Task |
You can depend on the whole funfix
library, by adding it to
package.json
:
npm install --save funfix
In this case imports are like:
import { Eval, IO } from "funfix"
Or for finer grained dependency management, the project can depend
only on funfix-effect
:
npm install --save funfix-effect
In this case imports are like:
import { Eval, IO } from "funfix-effect"
Usage sample:
import { IO } from "funfix"
const f1 = IO.of(() => "hello")
const f2 = IO.of(() => "world")
const greeting = IO.map2(f1, f2, (a, b) => a + " " + b)
greeting.run().onComplete(result =>
result.fold(
console.error,
console.info
))
The library has been compiled using UMD (Universal Module Definition), so it should work with CommonJS and AMD.
But it also provides a module
definition in package.json
, thus
providing compatibility with
ECMAScript 2015 modules, for usage when used with a modern JS engine,
or when bundling with a tool chain that understands ES2015 modules,
like Rollup or Webpack.
Set of options for customizing IO's behavior.
Type alias representing registration callbacks for tasks
created with asyncUnsafe
, that are going to get executed
when the asynchronous task gets evaluated.
Type enumerating the type classes implemented by Io
.
Reusable reference, to use in Eval.unit.
Reusable reference, to use in IO.unit.
Type-class implementations, compatible with the static-land
specification.
Type-class implementations, compatible with the static-land
specification.
Generated using TypeDoc
Type enumerating the type classes implemented by
Eval
.