Need help with immutable-ext?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

DrBoolean
482 Stars 26 Forks ISC License 39 Commits 4 Opened issues

Description

fantasyland extensions for immutablejs

Services available

!
?

Need anything else?

Contributors list

# 162,802
elm
liverel...
CSS
1 commit
# 361,541
visual-...
Visual ...
PHP
CSS
1 commit
# 557,969
JavaScr...
TypeScr...
1 commit
# 139,354
HTML
Redux
wallet
yarn
1 commit
# 3,844
node-mo...
node-js
contain...
React
1 commit
# 137,656
React
yarn
Angular
postgre...
1 commit

immutable-ext

fantasyland extensions for immutablejs

Install

npm install immutable-ext

What is this?

In addition to the Functor, Foldable, and Monad functions, we now have: * Monoid * Applicative (list only right now) * Traversable

Plus stuff that builds off of reduce like

foldMap
. Please contribute/complain as you want/need things.

Examples

We can now traverse without messing with Array or Object:

  const { List, Map } = require('immutable-ext')
  const Task = require('data.task')
  const IO = require('fantasy-io')


// Given Http.get :: String -> Task Error Blog

List.of('/blog/1', '/blog/2') .traverse(Task.of, Http.get) .fork(console.error, console.log) // List(Blog, Blog)

Map({home: "

homepage
", faq: "

ask me anything

"}) .traverse(IO.of, (v, k) => new IO(v => $('body').append(v)))

// IO(Map({home: "[dom]", faq: "[dom]"})

We can

fold
stuff down
const {Disjunction, Additive} = require('fantasy-monoids')

List.of([1,2,3], [4,5,6]).fold([]) //[1,2,3,4,5,6]

Map({a: "hidy", b: "hidy", c: "ho"}).fold("") // "hidyhidyho"

List.of(Map({a: Additive(1), b: Disjunction(true), c: "son", d: [1], e: 'wut'}), Map({a: Additive(2), b: Disjunction(false), c: "ofa", d: [2]}), Map({a: Additive(3), b: Disjunction(false), c: "gun", d: [3]})).fold(Map.empty),

// Map({a: Additive(6), b: Disjunction(true), c: "sonofagun", d: [1,2,3], e: 'wut'})))

foldMap
some things
List.of(1,2,3,4).foldMap(Additive, Additive.empty)
// Additive(10)

Map({a: true, b: false}).foldMap(Disjunction, Disjunction.empty) // Disjunction(true)

We can

ap
to get us some list comprehensions
List.of(x => y => x + y)
    .ap(List.of('a', 'b', 'c'))
    .ap(List.of('+', '-'))

// List('a+', 'a-', 'b+', 'b-', 'c+', 'c-')

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.