This is a playground
to test code. It runs a full Node.js
environment and already has all of npm
’s 400,000 packages pre-installed, including naif
with all npm
packages installed. Try it out:
require()
any package directly from npmawait
any promise instead of using callbacks (example)This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.
Naive sets.
The sets are limited in what they can store b/c are based on aspic. Anything that is not serializable by JSON.stringify cannot be stored.
var naif = require('naif');
// call the naif function with zero or more array arguments:
var e = naif();
e.empty(); //true
var s1 = naif(['hello','there', 'this'],['is', 'is', 'is', 'a', 'set']);
s1.size(); //6
var s2 = naif(['hello','again'],['one',2, 3.1415, {'six' : 7}]);
s2.size(); //6
// we can do set operations using logical language:
var s1_intersect_s2 = s1.and(s2);
s1_intersect_s2.size(); //1
s1_intersect_s2.each(console.log);
// hello
// we can chain several operators.
// the following prints out each string that is in the union of s1 and s2
s1.or(s2).suchthat(function(e) {return e.constructor === String}).each(console.log);
// hello
// there
// this
// is
// a
// set
// again
// one
The naif(array*)
function takes zero or more arrays and returns a set object;
Given a set called s
, the following functions are supported:
s.size()
: returns the number of elements in the set
s.each(fn)
: the basic set iterator, where fn
is a function of a
single argument.
s.or(s2)
: returns the union of s
and s2
, where both are sets
returned by naif
s.and(s2)
: returns the intersection of s
and s2
s.not(s2)
: returns the set difference, s
less s2
s.xor(s2)
: returns those elements in s
or s2
but not in both
s.empty()
: returns true
if s
is the empty set
s.all(p)
: returns true
if p(e)
is true for each e
in s
s.exists(p)
: returns true
if p(e)
is true for at least one e
in s
s.subset(s2)
: returns true
if s
is a subset of s2
s.superset(s2)
: returns true
if s
is a superset of s2
s.equal(s2)
: returns true
if s
and s2
contain the same
elements, up to the equality of their serialized contents (see
aspic for details about
serialization)
s.toArray()
: returns an array of the set's contents.
s.mutable()
: this extends s
with new methods for mutability,
returning a new mutable set that shares memory with s
.
Mutable sets have all of the functions above, plus two more:
ms.insert(x)
: inserts x
into the the setms.remove(x)
: removes x
from the setoh goodie.