Skip to content

Reason + BuckleScript bindings to Immutable.js

Notifications You must be signed in to change notification settings

Rohea/bs-immutablejs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bs-immutablejs

Note: these are bindings to the Immutable.js library. These are only meant to be used to interoperate with existing JavaScript code; In Reason/BS, we have more lightweight immutable (and optionally mutable) data structures by default (list, record, hashmap, set, and upcoming data structures). New Reason/BS projects projects don't need bs-immutablejs.

Documentation

The source is a single file of BuckleScript externals. The API corresponds to Immutable.js' API.

Example usage:

let greeting = ImmutableJsRe.List.fromArray([|"hello", "world"|]);

let extendedGreeting = ImmutableJsRe.List.push(greeting, "how are you");

let reallyExtendedGreeting =
  ImmutableJsRe.List.(
    extendedGreeting
    |. push("I'm fine")
    |. push("thank you")
    |. push("and you?")
  );

Generated code:

var greeting = Immutable.List(/* array */[
      "hello",
      "world"
    ]);
var extendedGreeting = greeting.push("how are you");
extendedGreeting.push("I'm fine").push("thank you").push("and you?");

Transitioning to Idiomatic Reason/BuckleScript Data Structures

Here's a table of Immutable.js data structures and their Reason/BuckleScript equivalents. Reason/BS provide the data structures out of the box.

Immutable.js Reason/BuckleScript
List List
Map Map
OrderedMap Belt Map
Set Set
OrderedSet Belt Set
Stack List
Record Record
Seq Use lazy

Contributing

Prerequisite: https://github.com/reasonml/reason-cli.

git clone https://github.com/BuckleTypes/bs-immutablejs.git
cd bs-immutablejs
npm install
npm start

About

Reason + BuckleScript bindings to Immutable.js

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 100.0%