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
469 Stars 26 Forks ISC License 39 Commits 4 Opened issues

Description

fantasyland extensions for immutablejs

Services available

!
?

Need anything else?

Contributors list

# 7,405
Shell
specifi...
fantasy...
Perl
25 commits
# 157,668
elm
liverel...
CSS
1 commit
# 300,212
visual-...
Visual ...
GraphQL
faceboo...
1 commit
# 554,936
JavaScr...
TypeScr...
1 commit
# 136,068
Haskell
Redux
algebra...
wallet
1 commit
# 3,651
JavaScr...
node-mo...
node-js
contain...
1 commit
# 185,226
HTML
redux-s...
React
Redux
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.