Fantasy Land Sequence Example
const Stream = require('most@1.0.3')
const R = require('ramda@0.22.1')
const Maybe = require('sanctuary@0.4.0').Maybe
// Fantasy Land lets us create a Promise.all
// function for any data type!
Stream.all = R.sequence(Stream.of)
Array.all = R.sequence(Array.of)
Maybe.all = R.sequence(Maybe.of)
// create an array of stream values, maybe values and array values
const streams = [Stream.of(1),Stream.of(2),Stream.of(3)]
const arrays = [Array.of(1),Array.of(2),Array.of(3)]
const maybes = [Maybe.of(1),Maybe.of(2),Maybe.of(3)]
Array.all(arrays)
.map( R.sum )
.map( v => console.log('Array.all:'+ v))
Stream.all(streams)
.map( R.sum )
.observe( v => console.log('Stream.all:'+ v))
Maybe.all(maybes)
.map( R.sum )
.map( v => console.log('Maybe.all:'+ v))
"Interop across radically different types!"
no comments