// entangle/unit/pure/returnlet arr = Array.of(1, 2, 3);let m = new Maybe("foo");let prom = Promise.resolve(812);// maparr = arr.map(x => x * 2); // we know what this doesm = m.map(s => s + "bar"); // maybe it has a value, maybe not - it's a no-op if notprom = prom.then(value => newValue); // just map to new value, no async shenanigans// flatmap/chain/bind/thruprom.then(result => new Promise(...)); // promise chainingm.thru(value => new Maybe(result)); /* alternatively, Maybe.Empty */); // maybe it can failarr.flatMap(elem => Array.of(...)); // one-to-many mapping