haskellstream

0.2.4 • Public • Published

Haskellstream

A simple library to transfer functional programming styles from Haskell into JavaScript programs. Starting with functions arounds lists and map and reduce functions which are easily partially appliable. Aim is to support functional reactive programming / streams / pipes.

Use

Install

npm install haskellstream

Examples

Curry:

var hs = require('haskellstream')
var curry = hs.core.curry

var pair = curry(function(a, b) {return [a, b]})

var pairWithTwo = pair(2)
console.log(pairWithTwo) // [Function]
console.log(pairWithTwo(3)) // [2,3]

Compose:

var hs = require('haskellstream')
var add = hs.base.add
var compose = hs.core.compose

var doubleIt = function(x) {return x + x}
var addThree = add(3)

var doubleAndAddThree = compose(addThree, doubleIt)
console.log(doubleAndAddThree(5)) // 13

Reduce:

var hs = require('haskellstream')
var add = hs.base.add
var reduce = hs.list.reduce
var range = hs.list.range

var sum = reduce(add, 0)
console.log(sum(range(1,100))) // 5050

In comparison to Haskell JavaScript is already cluttered up with lots of parenthesis commas etc. and that imported functions are usually namespaced. This noise can be reduced by assigning functions from their namespace to their plain name at the beginning of each module.

Functions covered

All functions that take more than one parameter can be curried (applied with too few parameter to receive a function that takes the remaining parameters).

Command Line Interface / REPL

Run ./hsci to have all functions already loaded in node's repl. It supports a command line history (via npm package repl.history).

Development

ToDo

  • correct line numbers in source code reference from readme
  • implement functors
  • add streams

Testing

All exported functions from any module are tested.

I've looked quickly into QuickCheck. Will try to use something like that later (randomly generated values?). For now very simple tests should be sufficient.

Readme

Keywords

Package Sidebar

Install

npm i haskellstream

Weekly Downloads

1

Version

0.2.4

License

MIT

Last publish

Collaborators

  • j-hannes