{"_id":"monet","_rev":"77-3987fa2113743ac7b33ccf0bf20af7d5","name":"monet","description":"Monadic types library for JavaScript","dist-tags":{"latest":"0.9.3","alpha":"0.9.0-alpha.4","experimental":"0.9.0-alpha.5-4","nightly":"0.9.3-485","next":"0.9.0-rc.3"},"versions":{"0.8.4":{"author":{"name":"Chris Myers"},"name":"monet","description":"Monadic types library for JavaScript","version":"0.8.4","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git@github.com:cwmyers/monet.js.git"},"main":"src/main/javascript/monet.js","dependencies":{},"bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.8.4","dist":{"shasum":"b1b8b572f8a8cd76a0d0507ff63ed93a4a58f517","tarball":"https://registry.npmjs.org/monet/-/monet-0.8.4.tgz","integrity":"sha512-c4QKjo8kHAiYGGI4fBsnZxhoBRvusNXflVzi9m9c/mqs0ZBrCeoEgc3UJpyH9Y5JRxb7AJR4WnaQ9oSrtr4LXA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAELG24yY2XynS3DxdE5qqRoHuGd0zskFkvgqBFdbKXPAiBUOcwphAKLikHCBrc5bnNmqZuXZuFXMHKJlGCZzyQatQ=="}]},"_from":"./","_npmVersion":"1.4.3","_npmUser":{"name":"cwmyers","email":"monet@chrisandjo.com"},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"}],"directories":{}},"0.8.5":{"author":{"name":"Chris Myers"},"name":"monet","description":"Monadic types library for JavaScript","version":"0.8.5","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git@github.com:cwmyers/monet.js.git"},"main":"src/main/javascript/monet.js","dependencies":{},"bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.8.5","dist":{"shasum":"f7b7869cb54a342a4e7114de1c38f5dca33d360d","tarball":"https://registry.npmjs.org/monet/-/monet-0.8.5.tgz","integrity":"sha512-XFt1WLXhlXof+eGJcV/GX6TyL7hWLbHZXdy2CFunkwH5uKw2A0vX39Tk4KO9r3E9tUiJk8cDRO+UpbWl8vTN+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0SPPfKjy/AsYQDx8+vxNj/tgbZxbYVo0B2iH/7dCcxQIhAIikpYSm/H+Tl8GrKlreMWyRb41bkD7yaVIVHz2AZfMi"}]},"_from":"./","_npmVersion":"1.4.3","_npmUser":{"name":"cwmyers","email":"monet@chrisandjo.com"},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"}],"directories":{}},"0.8.6":{"author":{"name":"Chris Myers"},"name":"monet","description":"Monadic types library for JavaScript","version":"0.8.6","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git@github.com:cwmyers/monet.js.git"},"main":"src/main/javascript/monet.js","dependencies":{},"gitHead":"776ff3d8990e6f1dd7790f3c2e7669ed8ba34534","bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.8.6","scripts":{},"_shasum":"f4f59c5ad85329e74a864845d6c54800204a3245","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"cwmyers","email":"monet@chrisandjo.com"},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"}],"dist":{"shasum":"f4f59c5ad85329e74a864845d6c54800204a3245","tarball":"https://registry.npmjs.org/monet/-/monet-0.8.6.tgz","integrity":"sha512-QnAc0Pd867sGIzGQG2ifyGq+QEvQwX75S+1Sg6pdfVBdbKBDpcKX7P51oaWfNE52w1v/1GfFzvr4qtmUl7kmMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHIxqZx7js9sahlL2aVKp55b7sCHQrdt9Z3yBUQumqzbAiBWpb/ywwhCEm3YSAoj3Zrpuzw6MgmOOH+vog/o4mpwOg=="}]},"directories":{}},"0.8.7":{"author":{"name":"Chris Myers"},"name":"monet","description":"Monadic types library for JavaScript","version":"0.8.7","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git@github.com:cwmyers/monet.js.git"},"main":"src/main/javascript/monet.js","dependencies":{},"gitHead":"d45f37d899ff496edcdb73482859829cd3af848c","bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.8.7","scripts":{},"_shasum":"4936f11d287d711ba9fba85c6abf178952709049","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"cwmyers","email":"monet@chrisandjo.com"},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"}],"dist":{"shasum":"4936f11d287d711ba9fba85c6abf178952709049","tarball":"https://registry.npmjs.org/monet/-/monet-0.8.7.tgz","integrity":"sha512-BIGjcp+byAzQrHkJ63pLrUvX+n8h1cu4FVf6UCzCpFooquWV2Hv2ZPiBqnJgdPXxDdaoLlQlvN6nbeqLeAhvYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdH2fpOm8XGUBQfup+BdehoV8B0pU45OgbU/IJYYRWBQIhAI+HoJ3d8oZIy94zg3gRWdMCU0E0y+z5g/+LuIlRlyKD"}]},"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/monet-0.8.7.tgz_1454815443675_0.9415590229909867"},"directories":{}},"0.8.8":{"author":{"name":"Chris Myers"},"name":"monet","description":"Monadic types library for JavaScript","version":"0.8.8","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git+ssh://git@github.com/cwmyers/monet.js.git"},"main":"src/main/javascript/monet.js","license":"MIT","dependencies":{},"gitHead":"deb03a5f71b9d1249d28d9a113d1760de3c6b90a","bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.8.8","scripts":{},"_shasum":"c92d2041ffe7ba270bc78226f092210ad624f4ba","_from":".","_npmVersion":"3.7.3","_nodeVersion":"5.9.1","_npmUser":{"name":"cwmyers","email":"monet@chrisandjo.com"},"dist":{"shasum":"c92d2041ffe7ba270bc78226f092210ad624f4ba","tarball":"https://registry.npmjs.org/monet/-/monet-0.8.8.tgz","integrity":"sha512-e+Z4pYwILhXgzjDmoInvl0yfvLxGitgtaN6WYfwQoD1U4WikJ9/kYjrEM91NgHX5zDsG9YURXxkQi9qoI03bSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGcpIl/UmejVnx3taZxhWZf8EdPpg/i/ror0DUS88g+AiEA2xQN7iV09pZYMDq2TmdUBI8ZSo/W/1i539gtoIf2BW8="}]},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/monet-0.8.8.tgz_1458953202121_0.9832765979226679"},"directories":{}},"0.8.9":{"author":{"name":"Chris Myers"},"name":"monet","description":"Monadic types library for JavaScript","version":"0.8.9","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git+ssh://git@github.com/cwmyers/monet.js.git"},"main":"src/main/javascript/monet.js","license":"MIT","dependencies":{},"scripts":{"test":"node node_modules/typescript/bin/tsc -m system --noEmit --listFiles"},"gitHead":"dacd3d2496e36e4b706992d9f8cdb7c47a2ef7f5","bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.8.9","_shasum":"add48dca2e6f1e6cd84a2cf1954c8c70b00d627d","_from":".","_npmVersion":"3.8.2","_nodeVersion":"5.9.1","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"shasum":"add48dca2e6f1e6cd84a2cf1954c8c70b00d627d","tarball":"https://registry.npmjs.org/monet/-/monet-0.8.9.tgz","integrity":"sha512-og2XWOZT2JBagk//SDOBZ4gL63e1y/Z7AFmQw+WxFm98eMoEPyUqYr2Yo8sAvG/3DKn9a1yRBXs2MFoKUtdjnA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrfpee0rnt5IA1wLrBGZW+Yz6uKfo9+P78VsoK7y42MAIhAPDlTPhCTDptqp02YbcQnDbB1xZRXReOlt/E56XFsoWn"}]},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/monet-0.8.9.tgz_1461045903511_0.13087736838497221"},"directories":{}},"0.8.10":{"author":{"name":"Chris Myers"},"name":"monet","description":"Monadic types library for JavaScript","version":"0.8.10","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git+ssh://git@github.com/cwmyers/monet.js.git"},"main":"src/main/javascript/monet.js","license":"MIT","dependencies":{},"scripts":{"test":"node node_modules/typescript/bin/tsc -m system --noEmit --listFiles"},"gitHead":"9ab54509ff3cda4aaba28a95a836168e4f2d8e01","bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.8.10","_shasum":"af82af50591466f78baf97c053e2ffe5e9108224","_from":".","_npmVersion":"3.8.2","_nodeVersion":"5.9.1","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"shasum":"af82af50591466f78baf97c053e2ffe5e9108224","tarball":"https://registry.npmjs.org/monet/-/monet-0.8.10.tgz","integrity":"sha512-Tk6YAMl9jLkscK5MaPsB+kGvFXJGUwdieLLAr2eeJ2iqfrEaxSn/eVxfvp8DS+5uM/pFo18JdzrG0EXudEQywQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgGXaQopDCNyPsFmY4Cph5NZZo8KHxd/HRO7s4du21mwIhAI4hPmHBzTZ+DydmFfkg3qLgI050EE9S03Fp5lIGGitp"}]},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/monet-0.8.10.tgz_1461568193603_0.2757185772061348"},"directories":{}},"0.9.0-alpha.0":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.0","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git+ssh://git@github.com/cwmyers/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"jasmine-core":"2.4.1","karma":"0.13.22","karma-chrome-launcher":"0.2.3","karma-firefox-launcher":"0.1.7","karma-jasmine":"0.3.8","karma-phantomjs-launcher":"1.0.0","karma-safari-launcher":"0.1.1","phantomjs-prebuilt":"2.1.7","typescript":"1.8.10","uglify-js":"2.6.2"},"scripts":{"test":"karma start && tsc -m system --noEmit --listFiles","test-typings":"tsc -m system --noEmit --listFiles","tdd":"karma start --auto-watch  --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-osx":"karma start --auto-watch  --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js  --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js  --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","publ":"npm run copy && npm run minify"},"gitHead":"605bba82df4a6418b3cf34473a0d30b22ca327b5","bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.9.0-alpha.0","_shasum":"a3f8b34fa6c70fc185a7a79e5792abed3859e228","_from":".","_npmVersion":"3.8.7","_nodeVersion":"5.11.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"shasum":"a3f8b34fa6c70fc185a7a79e5792abed3859e228","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.0.tgz","integrity":"sha512-9tQjKXrQcI4mgMASQMdp3ALepXjFDvMXhJ+gtyYpAFXwzXoCZw2hyOCtEsVGXXIK8l6guDpolgbFCKF5PBH+pQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGB92blddmjF+mA5HaqA2Rn4tiinfMGFh04ngdpRYLKWAiBKcHbrTWZlZXIaZ7inE7qN0Wp4hmV+HNgRVFKozMBEzw=="}]},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/monet-0.9.0-alpha.0.tgz_1477303837884_0.6404585195705295"},"directories":{}},"0.9.0-alpha.1":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.1","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git+ssh://git@github.com/cwmyers/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"jasmine-core":"2.4.1","karma":"0.13.22","karma-chrome-launcher":"0.2.3","karma-firefox-launcher":"0.1.7","karma-jasmine":"0.3.8","karma-phantomjs-launcher":"1.0.0","karma-safari-launcher":"0.1.1","phantomjs-prebuilt":"2.1.7","typescript":"1.8.10","uglify-js":"2.6.2"},"scripts":{"test":"karma start && tsc -m system --noEmit --listFiles","test-typings":"tsc -m system --noEmit --listFiles","tdd":"karma start --auto-watch  --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-osx":"karma start --auto-watch  --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js  --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js  --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","publ":"npm run copy && npm run minify"},"gitHead":"605bba82df4a6418b3cf34473a0d30b22ca327b5","bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.9.0-alpha.1","_shasum":"2dd2d937d97e46b78b08806678bf83f326f0d531","_from":".","_npmVersion":"3.8.7","_nodeVersion":"5.11.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"shasum":"2dd2d937d97e46b78b08806678bf83f326f0d531","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.1.tgz","integrity":"sha512-vAbIlsGYMxFye+p82XbfsdnBSOfEphi/qKMAbTGlW9HSa/vAmxv/n1bpK0HQcIn09qAJ6ePPWMJgMOvDZtwPvw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCq0vpdsG3MTVroT6+z2yX8l0SX+zoXiPCTrLv4zYi3GAIgEPLbfDc9ph0Xo2rpgdGn/ltJR4pOmgcHtb+G/Cf0Yag="}]},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/monet-0.9.0-alpha.1.tgz_1477342435751_0.8402290805242956"},"directories":{}},"0.9.0-alpha.2":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.2","homepage":"https://github.com/cwmyers/monet.js","repository":{"type":"git","url":"git+ssh://git@github.com/cwmyers/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"jasmine-core":"2.4.1","karma":"0.13.22","karma-chrome-launcher":"0.2.3","karma-firefox-launcher":"0.1.7","karma-jasmine":"0.3.8","karma-phantomjs-launcher":"1.0.0","karma-safari-launcher":"0.1.1","phantomjs-prebuilt":"2.1.7","typescript":"1.8.10","uglify-js":"2.6.2"},"scripts":{"test":"karma start && tsc -m system --noEmit --listFiles","test-typings":"tsc -m system --noEmit --listFiles","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js  --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js  --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","publ":"npm run copy && npm run minify"},"gitHead":"208cffa81dd4058373fbf8144fd49814153452bd","bugs":{"url":"https://github.com/cwmyers/monet.js/issues"},"_id":"monet@0.9.0-alpha.2","_shasum":"1d125833181ca6a1e80c6b0d405816f5ae1a6a4e","_from":".","_npmVersion":"3.8.7","_nodeVersion":"5.11.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"shasum":"1d125833181ca6a1e80c6b0d405816f5ae1a6a4e","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.2.tgz","integrity":"sha512-dRZnuD1aG1I+p+28X4LOwKy70O5p7RWZ8YZ3p8cWWFUy7GGL4IsUjybIHlk1B7gGHW1axZo4gJWZBD30YjV2rA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDc0IGct7p4GEMPgZUhE6LuUWKBiYra/kKGtVzFzVcx9wIgWb/RFBeBDtx4rhFk+aBVz2ytyI5Pu+vTS71y1NEkhwo="}]},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/monet-0.9.0-alpha.2.tgz_1477398398461_0.6410351162776351"},"directories":{}},"0.9.0-alpha.3":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.3","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"eslint":"4.0.0","jasmine-core":"2.6.4","karma":"1.7.0","karma-chrome-launcher":"2.1.1","karma-firefox-launcher":"1.0.1","karma-jasmine":"1.1.0","karma-phantomjs-launcher":"1.0.4","karma-safari-launcher":"1.0.0","typescript":"2.3.4","uglify-js":"3.0.18"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js  --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","publish":"npm run build"},"gitHead":"4bb1c2e082907b15e64c4376f10f79d984cd5408","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.3","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-XzAPxmMKFHKTfOvEvQ6f+y4oBY1SgKuW6TUhzTJJWINt5eZx8WYlqPUC+dCeL6NAM4FwmdBoj8za638cvMbPlA==","shasum":"3bebe23e5c71776b69d6512f22c42072c340af52","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuDY6Eu/mJPF6iLHrSjp4RncjB67zNmRAmLs+p2SnxvQIgS7YxlQnl30UeLwUxPEZPyzYawluW+YL0H7Yfq+2JnQM="}]},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet-0.9.0-alpha.3.tgz_1497898480138_0.7788256017956883"},"directories":{}},"0.9.0-alpha.4":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.4","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"eslint":"4.0.0","jasmine-core":"2.6.4","karma":"1.7.0","karma-chrome-launcher":"2.1.1","karma-firefox-launcher":"1.0.1","karma-jasmine":"1.1.0","karma-phantomjs-launcher":"1.0.4","karma-safari-launcher":"1.0.0","typescript":"2.3.4","uglify-js":"3.0.18"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js  --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublish":"npm run build"},"gitHead":"8f7a6fbd9693936d2c13624375ff82df253feb21","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.4","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-A284eH1qwbpV/CGelCQ4QC2klIzF6HRJdxDCjKNCuHYKh0j9zEEHDoTmsK2C7YUICjRuuKP7RkU5ONcU4hyUBg==","shasum":"2dcb32df0dc5d3fdb22444842cc40e132473ee7a","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5++PV8Hj6fIPHstfFisuL0HxfrgzzNRELdiW9ZbkSUwIgcUO4Eap10wyQ2ixWWf0pibHPebEfS0kKioReKgZQ314="}]},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet-0.9.0-alpha.4.tgz_1497906590985_0.8655676264315844"},"directories":{}},"0.9.0-alpha.5-0":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.5-0","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"eslint":"4.10.0","jasmine-core":"2.8.0","karma":"1.7.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.0.1","karma-jasmine":"1.1.0","karma-phantomjs-launcher":"1.0.4","karma-safari-launcher":"1.0.0","typescript":"2.6.1","uglify-js":"3.1.6"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublish":"npm run build"},"readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-alpha.4\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-alpha.4\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","gitHead":"ad9aba5c762cfcdfd5565f89f9fe5c204060c240","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.5-0","_npmVersion":"5.7.1","_nodeVersion":"8.9.4","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-ZfvpL9TUUf8/51qSQ5hJSxM5h3dtqpavJ8JEwdoey7F/9vJd126DjcDFnroDDmdpRZ4BAchTGnC1zZqcAagY7g==","shasum":"f6f443d78ae0643375b3e4b53f2e906d6143e126","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.5-0.tgz","fileCount":18,"unpackedSize":151792,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkMNBiP3ehgiS6ZNK9CNMvGqKa9YFemW9e2v9tfKxnWwIgI8jrHxd8hu3x7eZbF3R4Q2gokHb7kDSBTGwpYrvlPkc="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-alpha.5-0_1522958728279_0.9526736335685844"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"0.9.0-alpha.5-1":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.5-1","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"eslint":"4.10.0","jasmine-core":"2.8.0","karma":"1.7.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.0.1","karma-jasmine":"1.1.0","karma-phantomjs-launcher":"1.0.4","karma-safari-launcher":"1.0.0","typescript":"2.6.1","uglify-js":"3.1.6"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublish":"npm run build"},"readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-alpha.4\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-alpha.4\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","gitHead":"ad9aba5c762cfcdfd5565f89f9fe5c204060c240","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.5-1","_npmVersion":"5.7.1","_nodeVersion":"8.9.4","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-O0K2e8I7aqqVWjY3961JHR1uzn/6/eTYNhUNYc6wt2AShCITtChiuej5U5b3lTmcJmwEjlFh3BOGjLIQQj3gGA==","shasum":"6e11d9ca73e4c96e6b45bff39c59880094a947d8","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.5-1.tgz","fileCount":18,"unpackedSize":151889,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA0LfGnJDI3pTy3A1E0H2y8MBInDw6NcuzlkyMWo6zhzAiAtPxNm1GAv8ag22l3hhJixkECmxbGi4UrL+oslbIkNgA=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-alpha.5-1_1522959272098_0.3108539980836087"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"0.9.0-alpha.5-2":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.5-2","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"eslint":"4.10.0","jasmine-core":"2.8.0","karma":"1.7.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.0.1","karma-jasmine":"1.1.0","karma-phantomjs-launcher":"1.0.4","karma-safari-launcher":"1.0.0","typescript":"2.6.1","uglify-js":"3.1.6"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublish":"npm run build"},"readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-alpha.4\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-alpha.4\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","gitHead":"af27e34a99f461d2e1f5a2faa5eb82a2d5d154ba","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.5-2","_npmVersion":"5.8.0","_nodeVersion":"8.9.4","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-BSmdAdFnPOGsIzBVLHrdxdN6DJzkwo75I+PfecsgzjMLcc0V2VYUwKIR5RpVHjl7+k+dAL9bAiToUuN5NOeFTQ==","shasum":"abf1c3d3e130301fcf22bc28bd10a2fad6c0f94f","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.5-2.tgz","fileCount":18,"unpackedSize":152251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbI6AGCRA9TVsSAnZWagAAhkIP/3TLIvusDdaYAa4TMKFM\nNs5svdlNU7CnYGBSruWEHY2lH7ic6kfWG0Jr2TTkUzdOkX9XTySw8T70mh+M\nnXxihEDWvIu1aJuBpdK+MXDNjR5Mg86NVX8yJlguZvMBvYiZAirn4btCR6jV\nGPA3mZtmED3pwdaFM7GHxupUn0VqNFex+5OJx5rg58WkLKU/iMsJfSOubhYt\nxzykXrIACievIu/f1LqO5j9qTagNwyEazSxVFO4cGUJZTwVtcm8UaPTCUDtv\nxbXvMvSqX9+rmCY2QK9TVFmC7LDYEW4uhLCkvi2rqdSJl5Yspod/U4y60OEJ\n/ZtQ0YtYAziDrPzug2jQ6C5Y2F0cTaUOvy+ZFbHtP8aFnbU05HfuUYeUWabp\n3lBe6S2othv2rn0uA8R3vhxy/DU4L3UjGMHHsWbtucGGtAr4rnpH9WKUceF8\n/zFNG0cGmcCVD2uVHFohuI+r2vpqrPKQWpJzEi6dXp7ENIzjcq+ptxfqEkK1\nWGdYoSm5SiKp7/8UZ3kr8kvPC9IkIoNCfFmLKWmuckjHeCREBXJYPVHZjkvb\nss3O29vXeou3JgGxt9uVMub4D62vqofBdCW+4ug0+AsL3F5hGKAqKKaoXuum\nF2laDr+b1tn2JpDF4V3jKUkPmW86P+xxNjDku1SVDISRAa4LQABbLdbDvp1d\ntaAr\r\n=c5Zs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAExCPH4LHEHi//HpnotclbeKyUEuZIDGIvih4DyqZ4kAiBoIWdBfZRlDXMJlPHprcumGHhjXNqPCK/RggWwkx3wrg=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-alpha.5-2_1529061381765_0.6091604690876038"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"0.9.0-alpha.5-3":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.5-3","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"eslint":"4.10.0","jasmine-core":"2.8.0","karma":"1.7.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.0.1","karma-jasmine":"1.1.0","karma-phantomjs-launcher":"1.0.4","karma-safari-launcher":"1.0.0","typescript":"2.6.1","uglify-js":"3.1.6"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublish":"npm run build"},"readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-alpha.4\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-alpha.4\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","gitHead":"af27e34a99f461d2e1f5a2faa5eb82a2d5d154ba","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.5-3","_npmVersion":"5.8.0","_nodeVersion":"8.9.4","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-KgZcknzU8yLqRaDW5JFfbtNbTw8+X06TcqBpwIZy8Ygn3hb5BOAF5bw+0YAmgNkrbda85MhWyRAv3RKYSWHXUg==","shasum":"69ce25dbf1c2a887567445f29abb5bb174409ec3","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.5-3.tgz","fileCount":18,"unpackedSize":152504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbI6VSCRA9TVsSAnZWagAAfhIQAKCTuXrLlYDnjRa3hUpc\nzSiPo+cyadeb9ESuqzrf46I/fb2l5J2k1AxN7AEfa8j/bNcLFJlZcDyNhy+R\ngLiUapriCLsvreCYzCfFbV4aKBs7O6jhM3Rr9/BJhV6Y/1+FbDB9vS8xo55B\nHG4WVTgrF1SxAS+dT5CPfKmkRfnX1rGv7+5bBDfsi+N6F03rVkGdpbxlT7Me\nwj+nJolxWQ7qKkYeMz7d56sRzvh05mCo07pLGXYk10I0tjv52ok1hzdZHLWZ\nBu4u549VJABwUbKyBJSU6TC6JtoXt+pFnbWh+P5Yicv6eil5G+OgGdwnvmOl\nBF4qk9Bt7hnoLeP3WUz2vUBkwdWi2dSSiwFddIBJr5VN9G9ZrcdAr/DuntQw\n2MRr7SFJmHsrvGQGQxv39/yQWBavwuQHr1XQAu5kMTDj3eup05hxDpfFBWG1\nMPjtjqDYc13rr2/Uiq9kGAu+htSxZIDzV0TXP37XQKsIsQaCVYhwHet6lcmX\nEGCQ9tiodq4lvoPnk9mjhgc4qqSc43HipMWrEfbTx3eY2RbqBsr5weU76xa9\nzXbAHI+dUv8X7uTc8BfY2uUBNvPeLLLGAKCRquFplf6e8WnOFIcvEODLGIu/\nIweEGq8F7AWRWmnK+knd7lhYQ35JOQ4Y78Y1q0Kv1r9qjmAKF65x7XSqVyQq\nTNn8\r\n=6LZE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBnk9PZz7rj4pB+LGpmeJ4EMCbbj0fE5Odi89rUi3Bh1AiEA1VN0GHUmgXKZVMPD9Y/1ZGwK5BgF2cxBQMVEowGVV3Q="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-alpha.5-3_1529062738378_0.6207331497046373"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"0.9.0-alpha.5-4":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.5-4","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","dependencies":{},"devDependencies":{"eslint":"4.10.0","jasmine-core":"2.8.0","karma":"1.7.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.0.1","karma-jasmine":"1.1.0","karma-phantomjs-launcher":"1.0.4","karma-safari-launcher":"1.0.0","typescript":"2.6.1","uglify-js":"3.1.6"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b bracketize=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b bracketize=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublish":"npm run build"},"readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-alpha.4\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-alpha.4\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","gitHead":"af27e34a99f461d2e1f5a2faa5eb82a2d5d154ba","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.5-4","_npmVersion":"5.8.0","_nodeVersion":"8.9.4","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-St86SWAES+Qw1rmGFCqC+YFRjbO9TSkE4pPBbwoiEYUNyJsduDP3xSdKrSCrrw1Qq6JbpCk/m5XJyUqSlHnGcQ==","shasum":"34dff206120d5a0c6002b27b1135fa033241c9c8","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.5-4.tgz","fileCount":18,"unpackedSize":152534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbI6zjCRA9TVsSAnZWagAAVpkP/2b+kGr7D2aEMGby5Zfr\nC/WCIQIs1pl9o6Tk0rWPLFKXt5Jf07pQUQ1EPEOGJw98BFiLqR0I6thRBWgn\nK/rJzoJ/XDEcdVI0vkzbr0vOY5CZTCE1oCjE6fWcUT/JIcNHC9+AcqciDv60\nnvuLs1SDnBIVdJ/HhlWVRJTyGg08Iblnntun6dAHHiaixZB8v+iMBLEKTRsD\ngn2KGIJ3hRhtGwEdcLkQL4zDHrATxVX3Y1j9vYEhcMMbwFSNF6jzcIeEW+pl\nWHhsO9Nww8BTu+kj3q3DriK1wThkmLRTWZUj14nrMCoS4SDaMjZ7oXPF9bBt\n0RPqfyN7OmgtzU+ditC2eSrYU0wBkxlch7gwllb+fNjN1haPMJroxRRst/70\nZ18yiONgFMUqAswr55Bx1dvQ5ilQu7+gHR78jJXhu9K0AYoHiD7D0jxjnk1O\nY1evC1PhJZsXxgW5KtJY3cejjBF1kG65q62IBzUqHqIwmVOYwl2H63prggen\nCFXu1hLyJlRzGKApSbww3MPdnmiYxMgTo7LOQkMK0k+96JtZ48RgjrbxuzLq\nqyqYpbdUH0oAt3ENHlEzUljrE1i63JJUXLrVjZ2gpPxqbfaepFbxA9brDYZO\nfNJZzAM7KzV8omOcz0KShIEAX9j9jSsjfRHDm+QosLWJDGADQltXSr2QMDTy\ncV83\r\n=T99B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMezxDvnU5yQE3oR8ew0ugEkXH+0st/D0Vr0sXJuXIlAIgJXbPLWjdtTp8QfJ+bRMQAfZ6xIj5l8LA/WYbO5kvdRY="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-alpha.5-4_1529064674758_0.34958174616704185"},"_hasShrinkwrap":false,"deprecated":"deprecated"},"0.9.0-alpha.5-353":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.5-353","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"4.19.1","jasmine-core":"3.1.0","karma":"2.0.3","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"2.9.2","uglify-js":"3.4.0"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"a8d87d9428b883315f2a5fd7c5ac3adc4f8d1c2c","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-alpha.4\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-alpha.4\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.5-353","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-q+yFCWmbt9keL2PxEu6KnvfVYRyZDr9BQ4E9jA3HkzNpXpIQVufNldtPn0oFrAKp964k22cDEVP+JTS7Qa+0uQ==","shasum":"08f24caf4d9d75a60259eb2a6ccf930319e6f4ca","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.5-353.tgz","fileCount":11,"unpackedSize":125704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJarJCRA9TVsSAnZWagAA3qUQAIFuKiie0kOGvvs4/rfV\nfDpmz6JTyKW4FUHBlxtWQJuTWWn+Tw2pc7fs2QOnP0Vh0si1OLnIGCJtlJPB\nC/djYx/rvK2KLIAc0UrHokygtZv5R5ETVxRE4dLZWN0BFCgGn6ONFMrLX9xD\nHIGtBe8x8b9vT2kVRiehv8aGy7sSPFWX1HsE1qi9KeLNCsdPlzic6+R0iso1\nIEvKzhq4GJelj3iu8c/ZIH06FZ9Rr2zu005U0kdrSfYgkZAZuDlflRyvn81d\nXFiIw9V28ZEQoC2sKl6vEvwUpfo3uJNv5VUUFNogHZfMQhtSHO2Goz4pvjit\n0m+et4Py57xMoHimq52vN4Vbp/JuPdqy6TbO4cEnIClarUuMum2QGe+HbRUY\npqyi90tGMuu895mnjEfeW1XLF3daKhAa99PcEyNoTEfOvVIX39sKQ7rYCLkg\nWgYOP3FPVSQ0ms/8InDjomGZJQTcNDsFR6q6pZacRCZ4M12ZqYDSirtou0HD\ngX+LV4/xgHIXsDvzL6yWmJCI4ZOs695GDwMKsV3RQqvpeb+2nWRDqH138REH\n/B4DGHbJ80F5uxGs7jhLFi9sP7E0esmCrPw/5qGxPFw7f2MRV+GAHdRXzgcr\nqAlsE9HvyJ9pw6p2OM83cJ4tpBED+UYEoz8c4TCrrZXKqcsSxmea2QXOx4nA\n3hb8\r\n=Ah78\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFL/QObqTpKSxFPMpy7kgp99bBubDWQb8IUvME/3RNZgIgEmswRBYhVqP1HfW6UR1mvqBscsTLOola6CpKXjley+c="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-alpha.5-353_1529195209090_0.2912843199706785"},"_hasShrinkwrap":false},"0.9.0-alpha.5-356":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-alpha.5-356","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"4.19.1","jasmine-core":"3.1.0","karma":"2.0.3","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"2.9.2","uglify-js":"3.4.0"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"1239a16eea1f08021e91630c8cd6e80f8bce8ba5","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-alpha.4\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-alpha.4\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-alpha.5-356","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-Uk9pxeHE3JNeVAbAQ9EDE0Thoi4RfCh/86jDwLXg8IVKHzfkQc+ENwpApKRvQZfZOIvyUhBJGl0cQIsojnROEg==","shasum":"a382396835c3f26362484697cb7250f7ee1273ef","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-alpha.5-356.tgz","fileCount":11,"unpackedSize":126651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJsmBCRA9TVsSAnZWagAARXMP/RR1ZMxg4K37jwL+0tAL\nl7tmqnJS36An/dJfebIPXMQIAtjTyaBPF/AxhBuDv/6m8ALugivAdNL867RX\ncTqqZXJcs6h+UaMK4I7J+OW0+uTDgprBT/WqQ9WlPfXmwPxt0Zbj8OQ+qPFk\nPm/fxLG/2sEQzmr3GvyOW1ejg0ISENtyK7AHQEorE/eNFjlsSeO5qrGcOXHx\n51jQUdSLfqJOxHnIyGZwSeQ1hrMn1t+41pxKa7kknoN6Em7zptfbkRVnrAV7\naf0WahIoT+cRU7Qz8GgD8EjccrEZsWnOANb3rJs+4v+RzNbvCr5yVlc93tp6\nWh8e9AdTzOrgMEj6hmnBcCqdJhG05H882pdcHkXNnb3AqBxxbkUbEIITeMUO\nJi3fJzYi4luv/irSHeMymrnJnUcrsI1tMIBG2KWhVocHDxG5ciQvD38RI38q\nQfdopsTa8wttfwO5G/3kYX84JreZ5jBTFC4rBASYNmPoeJZsK3RsAZWaJ5Jy\nbiO23BOKIDdGaS49CvsG2BYBedlvU/OMFRhilzN8ZVsrmcYlwolFgLI5YKlp\n0zkwSZxbbZ5hIsW1Va1G8Imal0LaKrTUu+/bNYBH/83SEzpEMIsq/ROBZoui\nLfIO6t9Q/dDlljTWadmHS3wsTV2qQqAjrnnCUAgoYKHmARHjDFtidCijXYOI\nxN7u\r\n=IKDQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAmkgDjrdSbBCRq5vG+NqqyNqekuJsyDzGyo+iq2FmCeAiEAt2cHezcJdPjbivHXDvaygPsYDgxlTYjJdYqaWD9c028="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-alpha.5-356_1529268609308_0.7260988771985772"},"_hasShrinkwrap":false},"0.9.0-rc.0-358":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.0-358","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"4.19.1","jasmine-core":"3.1.0","karma":"2.0.3","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"2.9.2","uglify-js":"3.4.0"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"c51117e4f557423ba2b61be8187def84fc60229e","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-rc.0\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.0-358","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-LT/G97KT+9B4483GaOKeKzh4VPklcpLKWNTROWp5riL047X3bytt7Us+4pgnKwPo0MQNym0npDe5hyeKQr1Jpw==","shasum":"5eb9612b2274b34a311b62f65b9c89ca74b93451","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.0-358.tgz","fileCount":11,"unpackedSize":126658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJ2+7CRA9TVsSAnZWagAAjvAP/10PiyuOx5Nb0lNe//Ib\n2M58QyMb3ZjP3m4p8S2rDmurZrgEG9KY0mBb6lHfU+rDkLUmgjBtpd8XFmCS\nClu8QobSOpbwU5+jwbAjCJ5+3hHma+ps60N0HApHB3smynz2zU9IjTSVWO5r\n+dEXCTnMFkVPqvbUJGfvf5+K1k9afeZ3VO2PLkd7REwa4RDnlfwLV0m6ZqhZ\nyW+XgbcpNFrzYMx8umac3vXWLjnU31pwerXkV6pZ2e1fq/gvMFCUOa6kSg/C\nJyx974ntS9WpkfHyfRWByhHAkwtikKcdysN5RaLTTAoqIQAKwkyG+t/r7DKK\nY1Nb9ZP3OKFokx8L1sfwdssG8tuQYFdjEv1CfedlBuoFbBWt4c29Ztw+BCet\nx6oGMUn/TReM5gnzf2a+GwpjBF099FQbzjbx+tpK0bh9eDFh/Ofq1OzPPDUR\nW0rvFSF0ghDNOC4am2yuEpRvjAvXQFh89UxItu3jf1Za3+jaoW5PmmYxzo6q\nhmoZRQsot9ZA9Pa8WSfe+uuwImueA+eG/14gbvoVSJNp+cwyzVxaxg/1kHYs\nZY8xomDIeAODu9CcvHkR43M5xEi3mb5pDftCMRVllP2rEfbhdAcP7fPrpX9a\nx+DwTxk+1+op5fbZq0bteZxZrLx2WDnL8iy5j+r7mBsvD73/2yEoLppKkpkd\nUHxz\r\n=yo0c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDEXl70V6Oe8TwUewBzgGNtnKEzvrJHc7wIuwNPwP+BgIgCjJ15h0Tof58NgpflbiHELHwr5w6fG0FJd3bw3ixFwI="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.0-358_1529311163059_0.9359245208676965"},"_hasShrinkwrap":false},"0.9.0-rc.0-361":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.0-361","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"4.19.1","jasmine-core":"3.1.0","karma":"2.0.3","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"2.9.2","uglify-js":"3.4.0"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"13b6615de71795af21e3e6c706ffdc256792f3ca","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-rc.0\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.0-361","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-MkhrQesc6W1IaHYFq/9GjK40/8zGhmTmhVgHTDEBiUjoao1PWZGNMkFHUrmGmTrnGpMy2CN9DHnnYj1UrcQmzg==","shasum":"c23de5c9c21c576b863a86065f52e233d2f60d8e","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.0-361.tgz","fileCount":11,"unpackedSize":126658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJ3bKCRA9TVsSAnZWagAA9UwP/0CllPWA/amW3pNEUB7p\nGPGOEXx7eYOXHFSgOP/K9At3rAhwppPgNHwYP4D2kT43C9IUyoC8SAE/bL6P\n0DZGVP3DqqvzqH7HXuaQ8I+HfHVKQOOTj1wz8uNIg4J7CE9+vPLK97Iwpso/\ne8HBPGtndRSzCkAVtD1z4x8roEq2RRHgFHcG6rbmeCiqRiCu5J6FTEKsAOCp\nMIFTkra4IFCbJFcRTPxkO+cr65YbLDwfFTndJaDk1cS61jfNz4ahHFaDt4Ap\nbssDtZpaeFINYLoHJzpwtDrMBrvd1QosiDBq0CukVn9iqW9AMOPgdzu6rF4/\nVonRWYwxtHvUS4P01IHZN7xSEBNj2IxKkreKuorLvTPUBYtz0aKnLg2SVRpI\nKu5bH1PMWJZwLgpaATxkWgiBZt9BJVYGLrGxlOfa8wm+T7Fb7Lo2wqNLZ5jv\nqcBF3KR+Wll9TK5cMblrO1uDNJ8u9wReAiYU+6bnumzUWcRJ6c6OGFofsQmM\nEqXBTo98nCbEwvONVUAIpFNIZzxXWVFU2tPi/UpejE/5Za/AGFe21STDEpS+\nwT7B4U1CN6KlLsQhXLT79GANpvLt8iU6v6f6dwNcZmW5F0LyS6MzjBGRiVKi\nVA5TX28PKHwne84WlAyq4cU2zb2v80VKI/X2A0P3AhNKktC2R0zB2LKt1ip3\neaEl\r\n=sL5Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVeexMiOhbBZAF6f6wKum1o8o7d/FsXk77sg+EdtEjVQIgZsV77k81Po0aOC9FWyPLrmFN6nnYspxJRJDpzR1gTLA="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.0-361_1529312969807_0.3787735275661144"},"_hasShrinkwrap":false},"0.9.0-rc.0":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.0","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"4.19.1","jasmine-core":"3.1.0","karma":"2.0.3","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"2.9.2","uglify-js":"3.4.0"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"4b5e1586707c2ba32e929fbfba8efc4d5cf578fe","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-rc.0\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-xorBSXk1HtSEuv5rpmeINjfaxJQrCPKwctbFF2O1kiejBGmzcRyweGGks+Eq2pI+fXLFX5m6p+MCSC2ZpaIFvg==","shasum":"939e8f82fb4a3a16d32fd2f3efda3ceaee6b487d","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.0.tgz","fileCount":11,"unpackedSize":126654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKCleCRA9TVsSAnZWagAANSIP/00aPr1GJXxKzQtxRthW\nVU/lmvVNkkY6yGPzF4Po45bxDvLk/rrY4GHCpetHO5YJAyBcs4J12bcoaZ/5\nd05h9JCjfB/M8ETbZ1jeVPurEUl5oochURkA0kEStultbsnY/UGnFDMj1WT9\nlju+p0jnBBnqFi6cGxkFWqg7ajHvTLz1HJj2jyfmBSejasYZ+8IZIkQ7Hjh+\ndErZpiZ1tgKDdoaAVKHAyaXV2KyhhcXin5vgrsHmWlTQ3R8FdubYpVrZhHTq\n9TAwSOv8oVGl+7CrgNuyZSQNYnDa2Fg8rtkTtEiYvmroVGXbtcEjmqemQB4v\nWqB4jcY4BkF63AFNYUokCRX1ryuZnoVlioqVHOw9n9W41worPwqCmFDk9Lha\nIAQIcCGd4Pc2uz3zne/+tsOM1axerOYO2Ui6VZcOewT/1pOQ2hpjaVnTuzys\nnCPUDzjGdsPaH75d5R4NlPk1gRIusWTeTi0gQs6jwYmQqwkgkxDm3+SHHc76\nH547QvqGmsTksuVLW3/fYlkNV8qVcm0rI13mMh4lhRG447c2ktKNG4551B+f\n9t1YTx2dTEBrG8+oLujuXSfsCd6/9BgvRMkRalVPWvK3nTd2pjItPk8rhfmx\n0LcL6e9aFyobzPgYZXJ9mhqsMozYHbzadAeOOIl9m0R4PZW1nnzpC2kZxrdm\nCmZ9\r\n=K7HU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3368WjyTw/BkeeH+1dNrnfehfr75rBnjXKybHvMz1zAIgF/7W45lf+QPxuEoTgoergulNUtB3QbuVl1VgTIFhvpY="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.0_1529358686192_0.40439578579361224"},"_hasShrinkwrap":false},"0.9.0-rc.1":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.1","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.6.0","jasmine-core":"3.2.1","karma":"3.0.0","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"110204abb76cb711156802d110fb212d16cef05a","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-rc.0\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-ofI5KSydC5jnaYE54yY5n3vBc5AyGYE7DIGMdO1qDNMWZenbBa6ePpAaWJXy2RviHrM8jP0ywbXIJMT7320HjQ==","shasum":"1f1314ec997c208629fda46158c5f01c1fda6734","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.1.tgz","fileCount":11,"unpackedSize":126941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboLEACRA9TVsSAnZWagAATZEQAJy6Mrgn4FQx9lmdhErp\nx47dp1QXah80pRD48Ox2hccwG+pZYI28SuYpdCTbziVTa/2PkYajJRzmc8Sy\nEyl7IiQrV0MR+Ax2B74F5kbOJ2aEFSoWdTQvVRUqs4EmyEwxhTKr2mPTp8T/\n3bbk8HIIkmjp/R/Xwl2zuYa6BHVT8CiZfD5+GN9qH3l7BuP8Bly+z0uglrQG\nx1VzBk/EptOvUxHeoeOGjxkxaJTCDeprqiTbikaWSigFcJ/YHu2RLZs8p3Ru\n+jC2Yk0o/1zlg1yvKwxS+NxyLU8NjBSeB6Wsy719BOV83w6A2ObFM6ncVvWX\nHgHxW/eIxBJXGemmqs+VNBbcLrRpUvPCFonh0pw8T5NvmAxnm6zU3MK8QCtq\n1CU690H0zvs7143LdZSVLaW4bmgWrxW/P7XzYAes43H9lm6lh/cRfeLwYzux\nCAyjGsiknB8lr2vTpz5Kb0ZeruCuQsaRSYxxKxXqPn2ZxhswV2Qc3Q5lPeQq\nDBDLLMnwiOAQiGkkh2nbt1rIEaX1b5Xb0rEZUh7iIaET8ANRbxwKr7yg42P8\njkcSMJihNAlcpbH4VoHtrWkAwSplYFPkG1Z2PO1Gvp92+Hn+UgfBB6BheO8Q\nOSQSxOn1cuLHquzwIcMKz3lYdwxaWs5AmxBu+FFegrT3qnHzAqSxNUJtK8xx\nISur\r\n=LW7S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFcfyNJWtULkQi413hm+NEqIWtsp8WnuE/3N+cP72WrsAiEA7OGp0gy2ipUNXMe9WFkkGVZV9r9+8i//wk6z2IIGSD0="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.1_1537257727650_0.9767701109565796"},"_hasShrinkwrap":false},"0.9.0-rc.1-379":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.1-379","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.6.0","jasmine-core":"3.2.1","karma":"3.0.0","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"7f131477944f68cf4110d4377c22de7e8d2189c3","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [bower] and [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### Bower installation\n\n```bash\nbower install monet --save\n\n# or to install a specific version\nbower install monet#0.9.0-rc.0\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[bower]: http://bower.io\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.1-379","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-xAierxI05m9ZloXZpZ+eQgFNtKwL1m/InHV9TxgzgSQ0UOCxndwdSHM7vM21nffCQ5kPJLRNhBm+6/3Et5Bt6w==","shasum":"cd77cbb89a5075e6c4f118fdde1bd30157849ff1","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.1-379.tgz","fileCount":11,"unpackedSize":126945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboLI+CRA9TVsSAnZWagAAz9AP+wY1RdbGkIN3EcoOz4Io\ndUnDLG2zVWvuw3h6uDJ/qlFI8uziHOcGua1AoIdM6evecLa+WFyNymSs3w1o\nyum51T2Ml1V0Xx7fwdsLEgp1kAaq27CCKmUWCYJ2j/9CN+vven1gLCKsPxa4\nV1BEKh+WOZYeDFFygdBprSXJTKwEQylFB0lUqwzJvOV1tjLyoZBsr3bHuPGa\nexoGOFqISD5M98WBYYf8c+d9zbmmht2+PpM0IZvtj7IZ3DIH84I4RZSLVaaA\ngK0DNpM3OEo5jS8xG3EfkTk6G5Wloa8YDK0NaUUjxrUOQ5j0qeHrbPFAx4VC\n7A/hcpCXYLve3wfi1cstBeDdvk8D7n6xmQVDuIGK359qvYHg5eGjcnBHnvIN\ngiCmXFIoktblWtTx7gb6hsYcvkzFZJYkCfu2G1FWCzfuqaIuS5VCY1MWbhUt\nUlisFb7ZBUejx8LVeI8IE4COpXFGvL/yg1L5N+Zw2qwcRl9/EE9+oxXOyPWe\nhx25XyAYzUAwcBWq3j5phLdvx6fAoBfztPrVMp0lZsFR7js2yGvmrS6cZmLN\nFqzeO/99wJmAHLlkQ+vbRlozS6Hc15Tmlg4agebOGagyFTDVmonQQ51tlNeW\nLQfAxCHaY8qJX8iWyvdQdsEJxkZ7Nf640F20/9Ze3LWgYF+LrQUUu+T9aEfT\n0Ysh\r\n=sS9J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQIedwN3OYdVfIoIPOWey40KfSoBZWWNcJwfSQOfICIAiB1znpY0lQfJ30Oa9/tF03uheaTpdZ2YLk2SX/5bqHtfg=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.1-379_1537258046271_0.8857423866814433"},"_hasShrinkwrap":false},"0.9.0-rc.1-383":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.1-383","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.6.0","jasmine-core":"3.2.1","karma":"3.0.0","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"6c88da3ff7c5a003bce52af161e488fe09a977f2","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tag/reader-monad/).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.1-383","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-cCMjegaYK6SbhMWFeEGrD55+7AboLgVFEIP7fXDvKhohvxMbcWQwMaX0IoMl+3efX7bktwsABCIY9up0aigQmQ==","shasum":"022f98fc1380ee16f786209420b41aed6b033c5c","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.1-383.tgz","fileCount":11,"unpackedSize":126777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtgR0CRA9TVsSAnZWagAADEcP/0tfwUrZ78cSlnAkegVn\niC7w0NcSEQDa56GhXq5+ChJJ/K06L5QDBv+igEjNdSzS2+CTduDF/i4MG8Tr\nX0UwKugwJRXxm8HzO39GOalTwEBtSOpIp/V+j6UFqQ29/PWygh08m1+dA4Ud\nb+y+gNClqFess6XSZ6F9eZOSXWXJRVokzl+6/pOw2FslNqo5xM/6gzS8aklW\nwVL7Zwftbsdgxs4OAZ5n4IZgdymfkNfjdqBCIjWq3mjdgAw2qHdhGBheosvg\nQD6KEGr/bl4qIyeEjkkUxasylRiJfOcQ0iLr6CQDcvwczaF6bRd8K+4jeEDX\nay0JVVfcKyLS74xcIigd7z2GV94koNcwVP+gqUTFbZ1EY/tf53+0pMz8rJ5z\nNikb0SkS3W9nLwQIZLY5quE/8uxWTH7y9fB8EQVdniApceF4rQHEVI14mz9E\njmH3ffMo3KOxLDhbwPJnh4Po/azLfoBmZnWw1nQJoHgaCJB0JvDeBq2wwC3F\nKtS51rSdHetNnZDVSRj9VfZxBhzc1gGbmNv8d0fDBuXt7oj4h4kqyUNfQf+I\n9AO9jVzOqaNL1pITvtak//T1ily3TIv3IMDkRhjyETWGzWwmEhySQsluBxB6\n4r66Th3AbCh1+EQgmcz0MalNFEgvmXlhO0JozH0Ypp5awFdc6wbiSOrSDEve\ntzsm\r\n=sGsz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEqn9DueyEhQq42TJt/wYY0HJiJr2SsycO0Gl4HylQCcAiBL0m52mLzFQGzi4X9YlO3uNXGMR5VQ9DmZb7CWw+A0Wg=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.1-383_1538655347192_0.372677660212579"},"_hasShrinkwrap":false},"0.9.0-rc.1-385":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.1-385","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.6.0","jasmine-core":"3.2.1","karma":"3.0.0","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"4983d915e7c175d2a71007de23e13477aea49e12","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.1-385","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-LT05qGJyVEFePvHOxQFick+S83W8czIfziP5yZ/QFFQj5F0c9xF2rG0XuLX6rEMvBvO5CEyKQ09qL1TLqg5Klw==","shasum":"4455fe3809fe433e18eb8520434f33bc69c97e9e","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.1-385.tgz","fileCount":11,"unpackedSize":126780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxXecCRA9TVsSAnZWagAAdO0P/Ra5lyxkx83dzpdR1BGQ\nKO1lteLPCJlbqXb/wKwBdujrV5j1GrrkC58gt+JG8fqGn/wp8LmjGRAYASkO\nR+ubkvmltljov5s5NPmY9P/x58t1khDkN1Cf4H6qFAWQznFaWqWlmWN+ZIKy\nGpmIl49/d3TtdW61t6Knxvk9b5hjVjGdUigroAyLXP92C77gCfNwZT/jGsP3\np8odONsH4RRRtx1Y+mXkDnQEUobZkdrcCuD//tSQNSagHTLv4zXgDDcKB8Nl\nmiFIOFQ7VKJ1j87iCCJ5LNYO39ThD7OcLmw2/y38BhrAGhGnQlvjFTI5SR4K\nyGXUtL87Ay+t3Wa6W+zcjlMRm6RnsZpPFbRv1RvD2x/eWNoyh8LFY9bczSFr\ncewGYk+WKIui2JQfQ7hzA12ds4Fz8msWreYuhu2Jj/RhbUk05PGnwWepofUl\nPyPt5YXnf0AAX7KVn8/EbTFB8FpZP2OELRhiUgJ88altJpqOE3g5QPBYBL1W\nnWyQUR31tZDJ+tmKqe7KrnGbEbgk68I03nzNgMoYP+bULGRaPzvtIyxEdjJN\niN7D4NJTSEh8nB97cJQZZb9Q55DRdU+cYCtFP2/cuynO801VEFEuWRAUQEMN\ntXQ5PqeQIr78X21pRBxKt9fdbgnGgmmtmdRApDVMOO6aSnj0Qfqaag++pQxX\nKEl8\r\n=C104\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCoqF4TMgY2TTeOrlTZgVzkcK8F2hV09GSWe9yrtom2QIgZj80GsUP6FlFKx+FO4frKRwZgrQV2FJ6v8i732oTMZU="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.1-385_1539667867937_0.5490594660677692"},"_hasShrinkwrap":false},"0.9.0-rc.1-391":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.1-391","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.6.0","jasmine-core":"3.2.1","karma":"3.0.0","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"1.1.2","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start","test:typings":"tsc -m system","test:build":"npm run build && rm -Rf ./dist","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"68d05b7d6d99c8085c2c789baaa65943c9065588","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.1-391","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-Ed+ZyVdDXPjzIVVDJi+Mm7n8CFwm1KanZ8erxM+99bxellU9TFSMcWV+p/RsN3F2hYhvYv+1LoOsDoGWEQ48ag==","shasum":"c2b66a0548cc93df809a5fabeafd7046c3c75d35","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.1-391.tgz","fileCount":11,"unpackedSize":126780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8VJ6CRA9TVsSAnZWagAAyp8QAI5wja7g/SNbClTc55kI\ndspyNu5LqoSKi2vYqnNyL4dggGr22f0XlWN3ayOA0xzJ/S2UKrTpkDJ8Ud04\nG0YaVDzHojSGW6awpRcIYdbbWBiv/NbWYHvEONEqD33YEqOcnf7vAwVeFMxV\n25ptUxlRW1a+fmUPIbdz6J2lu9eUQPC4x3HyoKH8i1wCU+Dff9jpVsev0ntk\nCOXyyUUWSgGTBWKfIGO0w7dPrBcFvYeVoeA0soCBqro4cAvunMENoPu7Tq4T\nswULXeP4apj/pqiO3QUegqMLDxvDA5sUnfsL+ikLxyDZePZJiig43XKDOo8/\nMEPALjKqoe8gQJDhWOsv6b5uYA6dxYbNkdxHHV/QzysS4xuoS1Ya4Nnyajyv\nCJKmexNS3nKjlck/FK4kTf7G+M7XmMhA6G6qfxeYYN6tMAlSwsguMEJwBIwP\nQRa1xDJMBYId+gr3u8BOTIi0G1BSiup5QJuyLVT09MICpf6pEMJksRJgJXgt\nD9YJdefZg7dhUYoslt7w4SdWAHjgAaLu04nGj+thqhzgMhy1H6LsEl3oIuZE\n1TYroQ+t+zlBq6kxdXUC8up00y/TNxn/wtQqYHZYsZN+QWZfClCE/N/T/Jtl\n7hWeS18m1DPabXS6NISWj2/ziFud/PZWcCAQKAY+aQn2CXmLybges0omF/Am\nV4Jd\r\n=o5TJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd4t7x/9we+1TiU5lOrJYE6B9oKOgS33yQ7kX4i2gT2AIgcq7jhTUORnrQWEapyRzjeLADiHnduyN2j2emxfaU3KQ="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.1-391_1542541946092_0.00887147215748696"},"_hasShrinkwrap":false},"0.9.0-rc.2-393":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.2-393","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"b8162155224bb8b502762ed521271b76b8fbd754","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.2-393","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-ixJg31xfuLq5VBFu79s1uyBbh716bNJNbpY/LJZanpdJ2s9EEtVpiYmdRpjQZrIkkryPiCq+fWZKVFx04gnAfQ==","shasum":"ddb662f6bf2d50b5dd95b9ab77233f62934ef7ad","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.2-393.tgz","fileCount":14,"unpackedSize":128363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8VTcCRA9TVsSAnZWagAAFLQP/1dLoD6XXj4afGJlg9Bq\ntfVkDmmtQ/OJ8PiNjaZr/BIp3wmjzTMT0FaYPBF3k7Bkw6ST220Y7dVgnrpU\njUb0PisR8hfJXMU+Nw8G1BheVCOQ/SCvaA+jEjW315VbnBXuW28CFdrlKCYg\nk33W6bhDvHVvSMMfkCC7WVPkXj26qb+0/UA7Q6LrqDrLkpt2oajWPJnj21Ur\nMmAY+mwNoUqpGAiCPAr7qRcozOPxgLrEzJZDIC4p2rXtGlL8TnTEvlFZxEAf\nMJKMIW9Z6WGe8q8gpTT6VofvV11arwt+ja8CcGQes5WuIS2bVS6yhN05R8PZ\n1pmRUsHXb0TfYyERgZDZstuE9DADh9nJVpNT6+2m/D6CdtY/NBvQv+uD/qw3\n1/XGS7jzOASpfqeJkqClhgHRUYXMDhGf4GqSIHg+k+eeJlQxS+dUpNPt2eX2\nbscFVtSARYO9Rh8jJy6dh15h/vZTmS3K8rRzplKXNN9ULIdHXfRTG9kMOhyx\nNJt/TZLrntk3uXYc/5v5sCXPKSMxon2S4BHqhtf+q8hx4NQv0FtHoerrqYyJ\ni0ObRO/HkiXb+yhhXgf0W+COjFK4VJbE2Ua3DlehKOhNYrXFsriCVuz2jKu6\nWRYMteqI56zyVRjw9V4qzXXcwHPmEQamuROm2x+N857lR0X4T/8lCs+YrAJs\nznmD\r\n=YrfE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFs+w92R8bEBo2x9IkdkSCGL5YOAhAgGgA7AT36xW0a8AiAjDrDIATBcyBMMquHOd5wMHaHSUYS+dHFpS+jbkgRTzA=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.2-393_1542542556259_0.17742174226777552"},"_hasShrinkwrap":false},"0.9.0-rc.2":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.2","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"9546e120a5b8d4aa6757738f11a58bde3504ffde","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-5GkvbPiCG5QUffURZZXi2kWisTlyIcfdhYBg83/YvZY2mZFaULjgW7ES/iCzQPhyhseVtZKGgh6lzoP4S3UOtw==","shasum":"0c6485cf0237855a43ba09929e4c4749424fbfba","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.2.tgz","fileCount":14,"unpackedSize":128359,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8VYBCRA9TVsSAnZWagAAKlAP+QCu2TxmOJOhgCVdEtuB\nNlNOKxx7EJkkO6XQZJlmX3u92tn2IEA13q9y/bjuucIE22GwNIjSAFG43rle\nnGkcTzQ6GPai/aQOmnrjcwm9SLZaF8dl+EONvP04cFN4r/r/f2L+oTdxUl/y\nHEsa8LjE38lgz0grm2/SSGHMjxACAbZjtWQE0NFz8B6/bMoJhcr+C4dK8kFJ\nQRlt9Mfn4fhfe62AGeEpmSsYFI4okXO7OXwt1gbbWzJqMXLT/XnjTUCA0y8Q\nACZEGYgqJwBl4X2fTkoo3yRfAl2n4P5H1w6gRKtnDdieF6H1ZsBluWgGRdqZ\nq5hsc8FPXaa0l2UlbiU7TadpYUoVAj4haujkydh+edt2no98VIpkO8UuC49S\nfYoTM1Sv69rXQTLm7YXvWNT1TtnKRQeC3sgFIDBFdrGHH8WLEKqDm5OonZLf\nffgRMZrDzqv0m1o+P4MdjbmLGHuD/I8MrHvSFQpLrdHY5eQoTBJWGWcPsXyi\n0B9u/ho533DEBES16E/stXHMnpUrKOKXrib7YSWBPiAlyByt9n03Ijw8Cdng\n2XDETbDFMZwkP0Ty19jjCILBk3anChiot891mqSnjlyieeL+BFrUEe8iGeTV\n88niKU3zqaKbIv/8y8MUYEyE/j87BW/nLtdwGftwG9y0wKLeeDa9DjCcAosx\nUF70\r\n=Br4N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6U8wM62g5SYyvjEW6VYKtikAC8J1vZPnTJFcjlo9t9gIhAId3ZNxX4ySks+1KWQOdm9/v0wH9RoGTZfZBvMnnuOD+"}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.2_1542542849158_0.8215600097169253"},"_hasShrinkwrap":false},"0.9.0-rc.3-399":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.3-399","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"d70d2fb4f837ccdb2f2caeca2a30de44bef4cb1b","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.3-399","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-y6hpblfq3nNczTnPxgx0is1Iq3lCQ2K8xEu3ZLs+D3HrnXkxWv5pZ34zOuUC66HfIkoA5h3ClKiP1K48SAHOGQ==","shasum":"9af9b117c43384edcd404c1edcb26d55d0fdfe2c","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.3-399.tgz","fileCount":14,"unpackedSize":126135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8XXCCRA9TVsSAnZWagAAQ1gQAKRtYp7zqLV0Di5nUdvZ\nIH4DGm5bKLcWZCHGhkNXeePjnO4NJJKxeJmAMvmwGR8+0EnMSHgyLezinREr\nsB/rLciP4+mih3wh3YmX8JYvFGMx9+GHjewgjxl04Cx5uEIApTsXiTYTYbQo\nElrDfXrxw1QSPn3cXIPf8ct/DbI+dWA5U/g57iFxf/sWi3b1+yOzvrKrLWLK\nIwRMYgHu0kMQrg/ZIGhPzEUJ9fZAtPdHH+vtPZaGAOncHvdnJUTCRlzPuCWC\nFgsQ0ZWrlVUeA5XX7XPRyLAj0j5HnhWigjGBOWEqJOoy/CM1KoHMMIxKNUsp\njnnHBuaiWC4yIqvnAssgU54nb5RodiHXY9sL7GTKoOJhxel2nmvy8SWW+3Yr\ns6saMYD99Rp/3ebRuEVBZaHJa4oxLOLze6Qpid6g1ou4N23rXjZQDaOs9ZRu\nQlvveeim9aZa+RdepbAhS1xQ4Lngo183niuqgFdq2hJTXcwihHfbnYX9WDrZ\n+KCJXDTUofco0G9HL1VcurfIrSD3sVlQg6/6/4hzkwBLznhwnncCOaYLFpFy\n7dZoUV61FXDPmu65sg1is2+MJLeHrbQ4dPw0C4iyYNxmRVK55zTO0eNm4nmE\nB81LlXXSq8nT+czWZWC3vkc6b5w5WYCpLziv63tr2DChTRCqt1flOXWDa5pw\nuIH6\r\n=y2Hr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCH1lpAU3MsjZQoVQA9yW9PWu/jiQRRctunXxhGXCR/BQCIQC0fZvpLqL9hgPgN1jeiYpgHTcumvZWsNwvaMR5LjHljw=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.3-399_1542550978085_0.46056775438660136"},"_hasShrinkwrap":false},"0.9.0-rc.3":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-rc.3","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"984d4ff59db77db4d2613a2ff62dbd26811970a6","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-rc.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-Ap4nHGZ5GB5wqedrv8+e4oBB+/LEz22T/2DRHxyzghWMz1q4AypWMYnH9K3oTuI6JnJKBCTEYHL/Pm4tn76WQQ==","shasum":"9240728a34d6cb3343a367c31c30f29f2452baed","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-rc.3.tgz","fileCount":14,"unpackedSize":126131,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8XglCRA9TVsSAnZWagAAuJUQAICvGHs7zdSOM4fXwbOY\njjJtZ7bKu2cNyxxsUFvaiCGNCXCPNfvUm6VCzCYhhQ5wAyRnyaqlo1fI7brW\nN3kBa6PMHRwA6AvC2OL0xSCOxQUWviVRnkn60/9HXhJEoQbSwfVMDFZcrhcw\n0ZRhnYqB/AzwV4x8E+U2zpMzBX6HiH6qKD0GjmmkZKq0UwJ/QEvsL5kJ5+Ep\nqJJCrz4Jc0aGDm+afErbbDqxNi2uZjD6mow9WtFeUEuvqTA4ThNe5mdh07du\nX8n8hso+rUa0n7HwjY3zK8NRgvp1RAiPSBs//YNbiLU5EuANxdh2Bnc0QHDV\ni87ZA7FMSp1GrsTOC9f/P2jGn3p7FQ5DZnYErtSxDZ1yRayCIJ0rkxUCCnPW\n3gGH98gJ8KxJNYXaKI6P100NRPWPKobrPX89/+CBF1AkZv+RLUAiWVQpoY28\nQBJ77SM1+4ZeAnnoc6VyXZTJZZcSktosee3HFmL/uc+PFDq2Y3eCKj/d23Tw\nhrZKOJ2Iso3lBvIBvbTRazFfXd+KYgqBnMnODJ/YxrCAhlLtfyQBwHXPQKYS\nbLB7fMKntDMoxD1UdKznH5sCQ5bSq9cv9aBWOM9T0BpY24rJZo2d7ve2Olkt\njWrcqrFKvO0oPsWhW2LrC2FRAEtT7U2Sq/n+jwEdUxmJNPdI8tMORarP7HWx\na/7f\r\n=oYxn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBxbQOvcKHkYnosP70HvNJhksBJM5aggG/qPHMtEYfxgIgWBzfUsAYtYrGUTyJCKinHllKOsLoGuXuUxGT/0SCX5g="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-rc.3_1542551588486_0.127020178057889"},"_hasShrinkwrap":false},"0.9.0-403":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"jakub.strojewski@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-403","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"654e641cee4842860c027bf9b1fbe6fbb0746f7d","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practises.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n## Installation\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -=>\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n### NPM installation\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0-rc.0\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.8.10.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.8.10.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-403","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-k9ah/J8nETr5v1bRy/9NmybC1V/SqmbXW647+VmpyIll7tsgBPj5/WulwzZs2NLCnbtGl34dbouMxbaQ0P+0xw==","shasum":"b6473351b529228ff558ec1cf395d8cd86a1887e","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-403.tgz","fileCount":14,"unpackedSize":126144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb87HhCRA9TVsSAnZWagAAWm8QAKG3NSdPjBWzskwd4sgP\nnzG9eKT2VIcJf6kBDjVXl4gfkc8DOkDj/h1Y7Bw66UxdMXPhQHRA7oB642EN\n50AP54L+bARI1FB/8VNJarsRSUFpJyKbT2rFlRb6dHTU2bWYdEVo2b930Dab\nqQipfGD6U4a881C8waXeHKA1x5P3h1NWsaJLTXzBJ7l+eK6vqrA3xJrOOtUs\nuQDH1MMZEUdU0ch6tRTSuTO0vQ3ot1Sj+FJcIPNx8M2rqGdRKg/7DoWdKpUL\nkcB+ZfB+/SJ9h6KZuWMP4JVeLiDjPLkLWZMuyQJeaZHOADXkNR6Z+GT+k4vN\nrIsFY5r4JbRZuSsXlAxWbCnovwTkUDolHLWY3o17cTwkVFtzoSZCyqRE7k8Q\nINFYt1XdJBlnjVWlMbcuEEnTXZTiDWZogB5CvlZ2eRKQ47/l3+QE1Qfwknde\nAjmpNsIXgA4zuM7kXTDjs8DxSC2J38x6FWcgqQlq9jbFISiDZkAxGYBhUsN4\nTKUa88ew3Fy98PdxjHEDlAXpPybBOZOmVBdGOV8x6Jljls98IjyTAW7/TiN6\nrVgU5Por7/kRU3Wg1EOlDmiy6yD3gQ69uhMrMhR+Jhccu6nmzvSgKmGQQSaR\ndmPLrAHm+HvyHewst76L8OWJrY8xTVXQi1fukzzREI8VoXADPYpy28/I1Phh\n2gOd\r\n=g+DC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHQNcOiSW5be4IhUPEhSeirhEB4drrwsmQHh/Z9eVOxgAiAsSA/HCPohUlVOeBtEmiUQvLzK7fSx/WmBJimtjuBp/g=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-403_1542697440461_0.3221070359678646"},"_hasShrinkwrap":false},"0.9.0-405":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-405","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"db1f3809d587b8e49325135924769e875cd99e5b","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](docs/README.md)\n\n## Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### installation\n\n#### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n#### Browser\n\nSimply download and add to your html pages or we also support [npm]. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script type=\"text/javascript\" src=\"monet.js\"></script>\n<!-- Optionally -->\n<script type=\"text/javascript\" src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-405","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-fMEM2S0nmg5qK6LHqJrqtQM68FCATu5yulucc13pOsZRhQzFJqvfOv+cNlDun4PxNEAcw0SJQMFwSEg7zfOAXw==","shasum":"d9cd5ddec02f2648a3568a1ef7069cfb1fc8ecf9","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-405.tgz","fileCount":14,"unpackedSize":126130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb87XlCRA9TVsSAnZWagAA17oQAJxQPGpjewuAoKXh4wat\nFLflyPFouqk9MTGle/0/EWKxZKa+S/fP64R3PuJPo72k6VqfjIH8UuJFAdHf\nEwpArDkDwyV/JN6e3PviRcoWwPGacQl4yoYdoiXl/tAePUZ58Wj8czE9uJ69\nJrZkQ3C2hA5t+VniUETp1AcoQ3FmzXfbqtRyQUQKDYtlNsKntS0XEcNGw8HC\ncwHuPfpokjZintJ+Y6wzXjN5PHmuF7Q+xRAGMgX7hUYWOHItTCUqQH0ZApJh\n9D6dWsoa58oNS2wjZusodWQ3FWmiVwcbcMnXpFUu/eRh051td+T+G3HeDsBe\nw/7/08T+SF0mldgIU3WAs1GJZKU3V1e6x+qF797tKsetpQOKQoQMA43O0xtq\nuxAoQBkXjVixgkfy1O2eWNGkm1yOQdfCXWDlJJOEXHDdvgd2g+Hmeq3HPFeM\n6cFxo167mZAOoyNaJTFP7DtipY9Us6w3hWKrrmZT9CUvoR6TfgFsv82iZ6j9\nljnwlqTRcflTAjUYR2bcHIuSMIb/eZV8qNqJlydG0zLGSnSCAaP5P2jucD8p\nYI4SOu/hosaS3WfauPH1p6O4Efjd/d4AZK4RzCuC3loe+F6TthUghQK+1r5M\ng7mgPEMsk/eSHr/Ox+61KJt37DyitqGm3wz2AodSwB9UBhsvjAh9eLJWjqdV\nONz/\r\n=DGTg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF88Okg34pl7Toe8e2OgRrkamxXJyjolQywQlyGLvR4AIgIXMdoSssWao1VeF/WZkAtefCtm7M+KedZ8KYnTRE6aY="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-405_1542698468573_0.13900556350905946"},"_hasShrinkwrap":false},"0.9.0-408":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-408","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"da75b7f05efff85f43d2f151a72d7807827564d1","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to programme in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-408","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-Z4TXmdszsM4IN7h+SCQwtwj6fJP27Vxq/Kvg8CBn1Hln9mdEq/wo+O7rMvumesC4UymaEq5QAvtl+bDvCSEs4Q==","shasum":"37bfc7010b262736c7c79222233822c3b53d18bd","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-408.tgz","fileCount":14,"unpackedSize":126517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb87rcCRA9TVsSAnZWagAAQQ8P/2Cj8qRu7QHxsiKJ5o+m\nG12wx3eAp+r7QR46oLs4kSoFYx+DSxs0w87tPUEMhC8HZ40Jmzs8B6dj2xQN\nlXETFzKxhPRDKzfhGVe/T2dHVDyFiDUxVbUvb1RWjROOY1I8kgYtmfEDV+H9\nWF0i+1GJ7tGXMaSjxq5rRzXTcFGqEt+URbtH6EUviEI99HHKeFNBDwOqkH6J\n+dz0R9l8GasyWdrvPj0bxaT0CjqU1/JJztDRODxFoNruqQDVIgDa1XlbFdmU\nFhD5kmqKz6dXEzjB2bFOjHIFiGQf5sqBWgaZgeSvmDL/cOuYbk3PZ7j0FoDG\nrUw30ZEn9uDgTp8lrUbi4T/QMscnrJUb4cd3J2aXbXtoL+5uAM/F75/Ee9K7\nV+RqB6EH01gtmlrp9v2AQWBoKBauCogO1mhre3VKlNXI899cQ1CXxcqOqJnn\n2ERHwfmtqAkmIc90+IH41LNAWAr2fHSqpoGZB2cIqsIdUW5cF/nMPr9zJptu\nBSsoBjcCc8OR4lXaDG46uDV/JdCIhorrXi45n+UgXhfiHNtGxf1M5bKZRQo3\nTGZpms/HG1cSWz4dES/PXEwMFXlTM/Xb0N05PXnLQrFTd90710hXBgGpuM+x\n61m0tT1xKA51+0ONTBSEmzodHhLvUOWYXJFdFVDZxwhRr5l34LieLs8ZnVK6\n0jk3\r\n=YC+z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHHl4fbXAcE7Cv6cpz4ZKuZJjj08fOhTadBXRfWXFp6ZAiAMLDUZBhB830jzi9Qn9XKioLq2r26AXq8R9yTHVCoVqA=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-408_1542699740282_0.627863768065356"},"_hasShrinkwrap":false},"0.9.0":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"6ccacf8a16038ca0ec515f11d92b428c4646f785","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-63UOb3RD3zXP3F2kMhYDKZD0V4HBxWgaIHNkp1p+BBCS1AYX51o0o9JJ31KZKuX4aISw4lUwaH4oFbyiKsswgg==","shasum":"77a5d112950243ac89189fadb745fb542313cbdb","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0.tgz","fileCount":14,"unpackedSize":126513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb87vSCRA9TVsSAnZWagAAWEoQAIAjRiKaiKnpxiihRJh/\nbsqg8AuPo2k+lp4c8ewNCuZM/0IwYfs+RZZEBzA+HWU71FF7zQ0zRBC1EFOj\nF0vCASJTjCPDxMpWSVmitnHsE5YF6ZzKCF0lyi1r33ms9hWEZ6Zp5ENGJ/Ig\nN5di3U2oB6rw60jd1kMgaath7HxSSWKknoxEaJBHBZldFEUn2a3NJVpBXfX/\nEFyT8tsOgXebSU+FvMQo7JjCiKUaUogy5uTvR6pTWAwSDbUCbpR0L/6lJccy\nSdsrQx/wduvqU4mA0zIoic3P1EXmu0Uj99SmL2PNpH31yvuoJn6kChNiAcJi\n58qiYUpoJ+cWnO1RFqd2/c4oV0+jlNlVvgpqwPt0im3Na3IbLPNDlRK2dHEy\nEo25+lLqjpFrCEjdgIfW9z0g2AOW1vtCxKJJ7hSQ6+Gn9begREErW7Lbbn0j\neo4DRQsBdlRf7+RioW/OzB0xxJ5RjYO/aQw7I/ESYavLuUaQbafMkc7Mar9H\nBNROyg4xv+4NKBPYzMq2IwNOymzV0iBF8BBDrFDCMDq0sR4kWjyrDDENSdOC\nKFu4H3h/9x060qChNnTFMExp2Zw4F7AZGb7o140oVvXelEbtcgLN88BUGSZG\nxbAIicXnLy18lI1X/piy5r7Nw83nqOuxm19BDuOGwb3PLjDUhyA2LQ0R+N1r\nlazw\r\n=XrZf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0dnfh1AIzYuX6p48kyYWPrN3fL6Mp8yLlVjRsSMm23QIgSMItpFvkmrKwtsiOLkeNOlwBTbbwtPDBpaRz9D999BM="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0_1542699985484_0.37442508267594254"},"_hasShrinkwrap":false},"0.9.0-414":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-414","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"a85bf240aa6a4ead60764e7f82169d595ba0ab2b","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.png)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-414","_npmVersion":"6.4.1","_nodeVersion":"8.16.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-nijIdfjuGlwxlCM9bP3Siqc9I48n4N4CpTJK18C1suAbFDaOnyWyXusdBy8QOKrnsNCAMRA40NYY+od3thBs2A==","shasum":"64129600ec11521e5a7dbf8eccb14b695764d685","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-414.tgz","fileCount":14,"unpackedSize":126515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5qsjCRA9TVsSAnZWagAAPS8P/j0DPGsf4op/g5UTaR6U\nJ3hJeCAjACrua+txuXojHvmCiPRoH6JL6gD/XGg4eCxPtUfTNxqK0c3lKRlC\nsxDIxgB7l9SymJx9TrL8/4RG6xgf9kxoKnWl9q4wK/wxKrYJ1KpheZmx3n9h\nSluEsAA9pP2fIVnYqYRGZwdRUUQJNCxdkx389pJxnpamafFVrT5Kg43YZtiT\nKhFvP7r1hB8/9DUc5UHX7PA2NyLkwiS71VQqtkHaUGHZL6Iap8jHPEbwYrYJ\nE8b4NyDckILuTqwN7iY/u0p9kq/ywWp7GgUeHwT1Qp2gznam1lA9JfAWSl2o\nR1FJl/5nHFXXN/ICxn6SNzrXZosJ9OsFgktbzPwxkLVRP5vh97hwvhCwWCCv\n/4nOxA62VUcQ1zobsQOawjOEcLAR8e7vRob7qmVIlde7C7wnAav7xvFP+YML\nttx+ZMFZLTQTVJLXYXfi4AOeaWDOLYpBKXvbS1DRGvJyZ/6fUWYz6kZE/VFs\nkDbwQCOn6YrUmqf1EoH7GvmVWz5MbFclG1in5Keqa08Rhm+2fkxWFVK0m+xK\nFMxcCk8yDtFxDBYEJ4/CzFzj95eZRbXhFN33nnjVoA5+Q9LCor+VhEnUSgGR\nZ9DYFTGTeu29Xnf+pdvCEjTlf0GsBOT+PU/e8bkmigM3ciTCtLs+sKdrS6L8\nv5ej\r\n=qokb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDF6lwsrzfeWSQpDJ2+Hpm0VyFbBe/7pyme/Wp/s7363AiBeZ+jLk89VVmy9g17XHkVbHWdBptaVV1qquKqFJRcipQ=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-414_1558620962761_0.2729757459010216"},"_hasShrinkwrap":false},"0.9.0-417":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-417","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"fe0d8fea4b9ad684bc6e1f0e12fa244cc574d585","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-417","_npmVersion":"6.4.1","_nodeVersion":"8.16.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-27u/A9/SSte/KNeeW5OFi0Z5AF5AXCMnJ5XIHFqagZnb+/hdMFzJFa29xKWBO9qA+ewRVb+CmUY6l4iwdT58vQ==","shasum":"7a52703cd621eb20209a1d8ec270e86d8641f2e5","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-417.tgz","fileCount":14,"unpackedSize":126515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7q3DCRA9TVsSAnZWagAAv5QP/0B+5hF+IsSWXEmVV2Am\nFfstxFw1Ve2lkxHaOyLj/tMDJ01LgXEeG3oAqdn9/IMld/+0omETe6uMi9DG\ngFQe6ldZud9lgZ6+XaJa8XKjh+7gqNFqGv3FmmlDgifVLZsv+FpG2Xl/0TA0\nBbJN3nXpiLAxbT3oPqZjrYbfMd7jpN3c0H9WqNsy7QT9/cE49zRNt0p9dtqF\nn1h0hu8FvVuDqjJ5puuhkJd03z6gqoZET9cDJ2Y2wkZKeQ729RejS2D84Iud\ntJQfoiPGVzSoim+LMFUcUVFnKuOo3fZcagom0e13CdNIoCk2VbsABLciTOSp\nX7IM6Qz+cGb5msK98yK7Whe6Z8pbMq279S8QMrmbwFd+2gicoFQDMNdmgqb+\nTuYBQOLjrFVYQWz72BNLoXi33uURnDGZYmB6bVnh58dCVByBIgzPPUx2AMTi\n8qLp4M1yIXHPHm1oXgcrmmpFY0FSDGUGOtjVH5dPL/AnHhUFNNqu4Qki1Kg2\nDLyDplZH5ZaBWxw6vAgbYYv54B7yAk0poCFtoB8PTMizwt5U/LLK2Vz4q0bD\n6vK8SYG9imzFB5uEPcCmtGaQ5QDvbVYljKCthfL9Vp6ERykXR4VMh407eGF3\nWB2oWhlDsJ5DwDR+BYuyNjE9tynNEWYJjPvHlxnzcbhGZYbLGQkGEHp6zDen\n2WjC\r\n=av6H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID5Zl5FERE44zjOacO7fed1BP/Q5/j3F8Tugpoxo1kJjAiEA57wNHnzpxfj9tpiW2PQuXeg7rPwd+VgJMk4Xr53UNH0="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-417_1559145923110_0.3420083367489697"},"_hasShrinkwrap":false},"0.9.0-421":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-421","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"c92c8140914dcc952a08f86085197e6e5a226706","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-421","_npmVersion":"6.4.1","_nodeVersion":"8.16.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-ORoM9FCOY0jxaP2c4BJ1IJIkv80Y8W/Cu2lwihgFFq5bD3Y5Znzn3qKu7VEeoxtUWu1L55u97EqmbgPOxGc5Iw==","shasum":"63064932d95a1e376018164123aede0bfa10f895","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-421.tgz","fileCount":14,"unpackedSize":126517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9Sv6CRA9TVsSAnZWagAAfGEP/2qxkWjIYhm7HvMo7SCC\nNREW7gbEtewabpUJdjgaIQ2TES9Q+AV8w93Bz35uxCsnIvaUvWX4EVOAWHNy\nBGakwj2PpynUYiEzgK1PdF6Xu53m/2QCXGjv0nkSjmiAWHf8bg1r/+k6Sts3\n5YgTGFXzi90la5hafIQgrn6IhGo+zRGI5H0Zx60DAQvNtyC8yW2dOyxQgtNJ\nOtE1ZyGXRroyIH2BQzpoZ9WqvMhYffzdgAUinsm2RH1KKWmI+aPjEscPOSTs\nFs9qe1qqdM2jxEP3v/E2KWx4zddcN4WxrXlMBUuRj8ZXDjyglg4CMGTl4TTe\nA+v//DNOe8/7xcewL9TNllmzv+RwW4D6BZOqSD1ivIOs+0UVB64G5PInGYUb\nUKOrl+NBni8G3IY2Dbvz/ETQqU26R8qwa9RrQn5yQ4lgcMNXDDyrnSp2bBUh\nTaFADTqy1G5tu5B9PLwZ0sPmZgzIBLlvyBzX4H+WezV7CTYpHLB7HNGY/nkh\nIe9Xz2hyPAyvsUICInR+DT61e/vSTjqPkixFGQ5DszLuco1G5Ekg5gvfEkTP\naklHHnWnjjiF2HSO/gQWkJ5JKW9Y7dQfzcoXg3QiGJazHH6wzxRXfmhvf+Aw\nt4289RuxYqWPcxl+dFlMLPsfz8jPJP3rahxamdgg7JSGx8X+FQVqkEuE5Ocl\nPt8F\r\n=kJDA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBPHeCqknbVAc1o7e04pX6vvBF9Vp4zduBqDfULqsPz5AiEAlFvWn+/isYMUI4K83r9XEpKYz/+wDkQPhVG01qdkFNc="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-421_1559571449382_0.44209397133261485"},"_hasShrinkwrap":false},"0.9.0-422":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-422","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"f877cd89d647dc74933ef64afcac8d3a34f493b8","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-422","_npmVersion":"6.4.1","_nodeVersion":"8.16.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-9QK+LEsNYiusTKPOTVtR4Np9iV952M9rKGqnUVJLGtPUxQkksVXwzDe13YzMD4NisYx8QE+3iCAaNRqtnSXrug==","shasum":"5e031b004a997a71fc96f5195bc6e3778a5af7b2","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-422.tgz","fileCount":14,"unpackedSize":127408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9Sw2CRA9TVsSAnZWagAAl+sP/3hyPSyUNLlXhBBsQveg\nCOSc120/cEdIRxbb8skiD1vxpJXPToZqf06nbHCL37TnO9wCq2AqTgyQJ0pc\n0XrNHrIcuXyZpHnYeT68rBJuctMyIb8Iw1GzbGgmyGeS0cnDbQpGkxmuyc05\nbRlBrnyzwhsNhGTbXB5fefPWY+ENrZfrCBiDa6YT6iJmLjbAgtE2GgcDQ1Pf\neACU1QQz+jk7rGWVbmTaAsfxDrzrn3lmQ6CF6CEu3rM79Pvs+22LtfzhlDqb\nteRu+ACU7pFyLEvg9aDPBJ+9cT35VIGcuXiOd5FzZiayulssTVJ13Mxbrl8p\nXc0IEKm3mhbPn6YXsWHr6+UB9o3F+5Maom16xieTe5Y6S34Axc1zmzqoXcRI\nJFsIe6S9asSfEb0hn95MP7ej0h3HA0OmmsHooxtJLBw2MwOT4YdJXPt8dVL8\n86zMJXAE9f9R610oJnnnM+OTYmW1S5GK2YOH2DEDXZgwyrC6CB5PHQKwKK3l\n4bvPKWB11HXsJ1qxhi7TJHW3A7reC5Bxb0cs2EICpx0g6Das5TT54oQwQ9a+\n8rVVtnhdPG2bHlwMLerQ0M7WyNX8tvzLe/zudBjz8EQbg1kq4kxZLEAMwk8s\nI+UEKlBAkLhfgMvC4HrCAadQ+YrINNKO3UlcxLI3nC+xbllHIpoFI8/avop/\nQ/0z\r\n=Csca\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAFqzirAtZFuMZ0q4NpotuBx+NBV/1T6gICS8ABId6DRAiAY+LYq4j6uZFq/Sjc/vb1rawGzChH6Du2kd5AXfAlzSw=="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-422_1559571509713_0.9175572784560659"},"_hasShrinkwrap":false},"0.9.0-423":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-423","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"054b6665d8ab6a747cf3eadf375cb1afb58d71cf","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-423","_npmVersion":"6.4.1","_nodeVersion":"8.16.0","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-FmvVvgNXDtyenpnzBKMmgnA/bfAPscuH5B279pc1uRtTlJ2xuqUJtn4YVdrRAC9cA+ibPf+nLONNyJFBUR9IRg==","shasum":"672cba6181b73ee67a70407d333db7f51158e1cc","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-423.tgz","fileCount":14,"unpackedSize":127805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9SytCRA9TVsSAnZWagAA8FEQAJ0Z0N/UcE2O7/TGZP/m\n0/2LSzYhP7P0YaJXRKw7U6TaeSGlHGE1YdICj21EmwIKoC20hkVjFHZnbeWQ\nHvNJlDlNrGihC7uLvGiEkLFe1Wllj6fN3fkuQekWZi7C/ZV5MwbMzQXkOcjY\nr4Yl5WluZLm9IJ1xBoEq7sJ3sm4kyXgwybc4ovHQMIERBoex1jfwWFFsGVhl\njz4dH5Lyh+WWteVGP516OE/dSUGZJL73rSZLIQLG1KsWgw+GAtb9V8VpB0iv\nqhwLZsTJuAnx9C/568KELT+iHtoPV1GQu4fb9ke1c8jVFzlojj+K8wCeWu/h\nY0LQhKgQi7Yq4rUKODsEaJFyjrd7T2SC9e44Uwt2g8DWE0cNFxWG1AKGxcgZ\na8tYkzA0zgYrUePOuLJrWcsoktaC9g2hSGMRigiIDrib+B4CEhLmbyvwP/Wi\nIHUkhSPRE8dhMs80VxG+vS42N76pFM7+XrzVJPAZgMAvFKEkmJUsJL5QTrLQ\ncHoo3ixJ/4i1WHhW1Si/jpN21mUyMUc0UctekYrT9UmhF6Kvyitzzzq3tqee\nP+xtLqbB3iuasRfId6MsEkbEhDeUMKXYa1g6SOP0PbIRpmzVBf1ljOJ011wB\nGSX9LKlAKYtEhrPZuyGl4/PjcTU7jmGQmOuu7BpKDCDp9Uw/IWAkW6Atp/nB\nQPi9\r\n=U7Jy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCW1C5O5DN+BmUddjqoVjk6/DtXMxU6BVNIsZ6mUpfEeAIgGcS6SDOaibq4+EmXMw1OvoAaWbqvCs4BJbqHOIBBCPc="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-423_1559571629324_0.6844522080892301"},"_hasShrinkwrap":false},"0.9.0-426":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-426","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"0e89e943bff8ccc55b99fad600190b9b323abab4","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-426","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"dist":{"integrity":"sha512-VF6AD+GQrM/w2wx96urN79a3/tw0AJ4acIHDEeamFMZ/h5AQQDX9X9HLgiLDu3yqeaQ7vSaUOy/K+TvEBq2kMw==","shasum":"e5558dcc60120c075f577833f2068aee8189289b","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-426.tgz","fileCount":14,"unpackedSize":127805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddjHfCRA9TVsSAnZWagAAK8cP/AreyHowqulkIhYnMPx9\naDYPQ6n384Vz2ApTuXV9w6ircyNL8+ADIv/TNOgl9lpw8pYA+NPGgkix4Qry\nknLPr3zBGm2+3RX0Bn1JsaX2IYZxn0K0PXxYRpgWdg2sgfdXIQS9PHygFYxO\nw8GfprZqAXGnTwiunLMsry+j0IU8WdOuUP3sDalJYaca9oDpa7qNzfMYIbT/\n4NibEymHVY+lplOuX3UHUJFK8UYppNJzhMySsGov4FAgNAR5pm+Mu1rli4Uk\nw6mt6dB6grQZvNm5c1cd5C70C86wZp4x47kU7jFgBhf3LZuvBPOlQUOYXD4g\nSGLWQflHDgU5SkzFIQrZ4NqAsX8+pbY4DhGL+JEm6DWx09Tpyfm+RqWe12zL\n9r0fhRySGST+ncNDvbTGccpbVful0Dj9mf7lnoxUGM6DLsPd19k8H1Q22Y9q\nRZZZs1zuzdbmxhCgFe9ggTAs88eXfAaZPK9w10PtNHzcVOZtnWQ5icbA3XWy\nZdR9QXJM23yXnbFZ2z+8iEKRkuC+ykLbA63Jdwrhd2tVXx8MfdZCL7Xpp6Y9\n9F2/hMx/a4Q0/pAa3Vppgk1F5QOBcS1p3c9dEcBxfmEjyBm3QQbvZFuFb1Q7\n5WbE547Jr4+GdMxAcc88kzhfmDZQEELDYfjRaKCfqkEl8DUFAKhii/WZz+7N\ng4Pg\r\n=gHha\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBKOQ/TnmS1/8blLziyeccctqXvxoLCtJ2WlKJwRpNwfAiEApPMJyG5dlR8yovrAnj05Mg4k0NRbHogXvjUImCs0yJM="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-426_1568027102916_0.3091779439864566"},"_hasShrinkwrap":false},"0.9.0-431":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-431","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"010c1e06ae5c484f54da8c514ee5a761ad44ec0f","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-431","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-T0ww2hTWOf+LrV5pLpQzOwznu50HYqdsTRLruRnyWp95fKQBJDJysQC3R3iHM1QslEs75olaYLV7xIPB0XKnsQ==","shasum":"91bb77a57e56e5a428b4e1193243cedb90cd823a","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-431.tgz","fileCount":14,"unpackedSize":127805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHWsICRA9TVsSAnZWagAAfvYQAIuZ2V1CY6K4cS0WM5I1\nxSyuI05rqKgynyoz6qJyBTuzYMkrZhKfpjvXfw8qKEQXdZOgusTHyXrgJ4gR\ndj4N5EqICQfF1cxhD0D/NdOiFJTAWv9QK29KzeWDL5Ien/eoWk36xKYPY4/S\n9uTt6jJu62njP7NrKblksCO2N7WJxFuTbPEMkp+gQZLxdTRc6Ss5QXZkNTPZ\nKRXXoBvn2iQLJO7gLYVDxAsGZ5YoWPe7ReDKXy6Pb4ypNwzNIoEO0hjYmpw9\nQM1yzzH5hcLQvx/Aih2ukqmlXrVdKhMlSSs3M2N2qRBSINi7MZdvss+bUezs\ncQ8D7GTWoyzHNgKLje5mha+d/PYM4vlZzl7R+d2GcuByajIAXluAdNvq4o9L\nVp3L47YP3W7GCn4RYAIlMSR16arcXeULsHJCCH6LOzpupmRclEDZgFUMdCUw\n9LxrppH5QjJ+h+xBcRBneMKAStefw/2McqktFqazbyEnWPtAMq7UyI5twUL0\nRwJM7zE/+B8O9M7ZN+KAXTajfKFXmgwPDIb+HO523r7V6Y8GCbj3X1oYSF25\ngIkY89552YtooEEdMXVd62y3F6tMPoY4GpLONnLO0LAuTFrIfeOdmVh1QQ8J\n02pMg0aCJEki/x044vmI3I+T0AvNpJbUd3/j5NIW7eIm+7lDLqrLln9z8USs\nwpW9\r\n=Hx7e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9OgFzi6BN9ffL90U45hodfBlk6+f+AxG6Ri3mMI2o8gIhAKLRvH/zDBD/HhZM5xMmKjqN8Qlzk2PvffYt/W1dit70"}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-431_1578986247479_0.7866659422811135"},"_hasShrinkwrap":false},"0.9.0-441":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.0-441","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"7699672a0c9f5d2974e4981fcee72c71523e0349","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.0\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.0.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.0.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.0-441","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-lwYd6SLBtIe+9y3LfYr6h36CniE6x+2NcAR2iQGmk5V+dqbaECNJZ8AISew0KeG0jyTqn16DHaPOFSBzU6bn+w==","shasum":"1c4af68eba4b9ce5eb1bdedc98bdc3b217764e9e","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.0-441.tgz","fileCount":14,"unpackedSize":128663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHshPCRA9TVsSAnZWagAAV0gP/2yoNAPJfHDz7cDLzI7L\nhTODgzk3JIra9Ej2I3egXg5281oJLh3yyXdIesYrnZrc1dgPjWAV5/pXfe0P\nJW8/NJx1MZmjODe5syhY7EdB/upMwYDOVQRlE+b6MFD1VXeJgtBY/dNOHiIA\nSPYWJikfHIc99/Oe/FWUC6s9sQaW587NSENxEDclUnTDxR56Xo8mnm5XshVC\n7raY+3SzTinWayA7tL7y1u8sy7SzNQMMMgk9R1Gl53PN+taCOwc7NRc6SbZZ\n5KcYurhtvCEnnl7NW8AKSjOSPm7PZn8tJvExgDaiIZjZ5qTioO4ANRIvZcS3\nunxRbZhoNxptAjYFEMXwlpzr1lY5spcGKdiiTM6z/sndLQxGebLRnH1JUzaE\nTG0mBh8jB4Ds9sPDAwHhp6GkcLkb1myP+rSffgzuQXwjs8ercg/CY9o6eHmG\nlkE5SrKBcgByqrMycLPdy06dRyn8EwgSsJrGYF5vFmP68rfrfPOSe7oCkLDX\n4PUzM8WF/bply1SNkZwED/IK/Ig4HFPYRa+GMNJdwRQiLW25rzgxqhkI8IzY\nAXvTY+z47fV49+g9VNTitLFvZFJ8aDp/YwneBTTX1m69VrKskkydh0A8xSDo\nEyEj8z0cvhdRkn+ioUu13x0VNsKykxTStkpble+JLZ8KufPQjrTNCKd6mQuV\nbRmo\r\n=WbVD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCt+yEU0eNzbucm6V5Nua+M7zU9o849yXTWbA2r3mii6QIgAuJgu3DwRxGez8XfF+hZ6m50JJSR2hrbgaFi2TOtKnE="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.0-441_1579075663551_0.05446236921956271"},"_hasShrinkwrap":false},"0.9.1-444":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.1-444","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"91ad3c41ff19b34b494a7f8b50e637b812c33893","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.1\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.1.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.1.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.1-444","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-UbhzLQO0u+x3+I3Reeg0Qn2e2vlR/A5NF85Uxok1Pob9x+3gxOVJmkgmb8kAq50omNyZL6r4141yQjJt17E00w==","shasum":"1b0ddd55f912fa807899cb47fd5f98137a66bec3","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.1-444.tgz","fileCount":14,"unpackedSize":129018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHxpiCRA9TVsSAnZWagAA2DYP/RI4UdGGGDu3Zf49ZcCf\nJPXr7RcBNlJPBUgCZJbv2e/RJci11h+V+60fzO1M6H1KBQuKSjebToIZc9f4\n1rd70N1QtR7i1kqFnR+qLA0TeA0WJQLwLNg50G+/Z+G+Z+TmjOY8WKjPpP3k\ndNhdIlWfJwGKnoB5zv+qSg2+FnmIA6aC6dnyFJVZy3HILhCUcdzHjHJLWgXN\nkU9kl1N1jRqAlVVdyNnrLlYFwmTUViWVRZ3dSAPra7iPuhcyaq1tioGtIQmj\nox3B2upe/6hOLGwUbG3UkGSWwhpsdwzpwLxIIrL+B1Pw4IQTL0TQUvudToiR\n5Ddiy2/YhaHHmCuXKPslbGvBmBhdSv7otrdGmFrPxOmNe1dbmCYYNxgfsmVW\nIX6P82H6myMk3wU4OO6SDmHcU+om/k1lNa7iBd0Ar/IcYAe10f+4bMePa4yH\n/UtaQlHYz9hiJ79Nwj4MKJWCJPTTPZn0e0djVgsJwzK+93zq9M5dC0ONsC1X\nOulnGQNmh+qVlqkAiy4kjUW7mv1tmAYsZ9kGXAFbZR5oH+laFsONCjVcmup7\nmGn2hnlGnFg25wACefyW7NKhiW/uTTs+J6pBShwlsJYz5dKTH0kaMe1zX1ZQ\nf3imSdwPmW6kcIf6BtFRFZwSyL0a+Z6hFWbMqh7Zs8WJPO0MFKEFaAENwhZc\narMn\r\n=BZvS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrYQGIkH30JkrXXfQ7OLikd1bI+k1eWiTE00xZAOWNoAiEA/W1fx/67h/BilvMghmivfp9RAB4eFST7mC1x22fY240="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.1-444_1579096674174_0.287470290342666"},"_hasShrinkwrap":false},"0.9.1-447":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.1-447","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"37b59d73d144bcd92536f7fd0a6f42fd64a249bc","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.1\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.1.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.1.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.1-447","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-rprSzwRNyeFkuBohfHdnu+nX8P96b6n15xfBygxK86WN4tj5NbRKqRdPgDmjI9o4TSuDFC3joeJpDjG5HyQw3Q==","shasum":"a56077d21f93053e881cf9d667a86e6273a053a2","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.1-447.tgz","fileCount":14,"unpackedSize":129018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeIBl0CRA9TVsSAnZWagAAul0P/1Y1Y2kP3bvuvPgz8mA0\n9JAuSPTZGdz97FqM6tB1oBYIJglyEtxgvSEl/6vcNY2WC07NA3nnE0l4Q8Lf\nkZ2cNkzDE+Gaf0kgAmw04/U0Jx5zq12NlVfNJsuJnsXo2cio4E1NYmxjA0dp\nuwEkRga3HkwO8hXLHmPH3PGPGzjhlH1i9Yq+HE2SLT9J3E10KPDTNTV4X/Mu\n5BUpYoVjWO6ADDoqN06Z+NTb7du1ElPLmhQh+IFO5oRxSdnSw8Tgso0VxKgC\n94TKwTVtfp6QltAh3JXB3vbZKZm4JScXXVx9b1lrW4cr/hFuoxoF0UcuMBqg\n3TCQaBQOPeM4LCfsLU9Ds7b3wOXcwd7Eq3D9VbEzFNj1tGtoTr1ZNci5366c\nYFrXqFlr4Qu0VsxnVPlLlNiUO/a3C2dVnLcKg1bd/MaiR13DKaCjxR8PewCw\nEwbTav58N/h6qQxTPuoW0NeXCYfvspfHxw+lQiV74rpkgBjvGsBxfrJHQh5I\nJJAcFXTnSsOjZ6cEIO6j1MP7jkDDTB/mYaFCYWw2eekOZloJc5mrZ6AflJF8\nFrbQvR7AkTtG9MUnKgE+bMU8wegVK79fClmUdosNwA2K1bpKkioC3tyDlMWy\nqvNYXWVv3oh8PfAo9NCrdkPbIlnNf3nqs9bVcxiwMEVYG1lcd6rVVUxHRDmG\nq9lX\r\n=AIDc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZLJ5WpWi/3ouHPjgCnv05FanavmOkhb5vALGkez3nVAiEA9wVrLC0i9gKW0sYcAUOF6YnFOszcScZolDjGtPn9KhE="}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.1-447_1579161972330_0.1077625107804987"},"_hasShrinkwrap":false},"0.9.1":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.1","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"2.5.7","eslint":"5.9.0","jasmine":"3.3.0","jasmine-core":"3.3.0","karma":"3.1.1","karma-chrome-launcher":"2.2.0","karma-firefox-launcher":"1.1.0","karma-jasmine":"2.0.1","karma-mocha-reporter":"2.2.5","typescript":"3.0.3","uglify-js":"3.4.9"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --lint --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --lint --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"87aff683a8501d91a0bd03adac9ddcd358a10872","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.1","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-GaZw308g6t0WD+U2mGujwJckGp2b8AGGVuB6PiIwkXbq6rJeiqddre2mdbO4PxjyILPi+7GgtRkkfr6dBYXWtA==","shasum":"89686a22d9dd8a6228fcde5265fcd86aa63981a7","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.1.tgz","fileCount":14,"unpackedSize":129014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJr3mCRA9TVsSAnZWagAAffMQAKM/zPGXXvawivkyH0Jv\nt8NCR9NcIw6hdD1mWyuoq8BhND+pnMcNFGui7qkJ4fUOfD6xVPnoXAnKkc/5\nocG1PYR/xL7MOgitfKLCX6Szq5uE7SFzQkuQkiqrUJcmth3T4W447PYfohVB\niA4NJ/cZLteR45JdN3zx7KsyBOyDukXBgwrMo9r4vIP8yhqRuiYqah5LNsmC\n9DVMOObqqiMZ17E2CCBezcypL2vDEgRgL4ZmoTULtVeyq1HO/Hln6yWu0HZS\nLW90XIj+QrY4tfOwDv+w+ufSOOYFeP3gTp02MQrE69TnLNaGSDTYVQS/e4VN\nXfA/GwZkG4Ri0nJqPlZqfXiS7gWXo+ruOxX3Dbt8QYwB1sqqatOP+D6JHzvy\nExB3bdo1lUDM4eID1uaKUDGDGzt61yXEEMbwLus8nVWxUbum1zqm5xo9sBQ2\n2ZQ73GAiNldsBG9UfNbGu/Z91M5xDp4quF5i5reGjX6iA8v/sVBpr6h6EArz\nbZFS1y5titsOsJtXuIchipFVjhkog8fWsmXUGMy2vtbqANulaybDAsMpuxEa\nG7ndza9y4q1ZmbftRiMm+Rhjd/ersVy0q+S5PPsT2NN2pCRN9N7PXT1buBpf\npR7jaJW1r0yZqkhDrN7U9bdkfjB4M54D4YEOcdIMjvgbW3ksjgqxdgvGNoIC\nI7Sr\r\n=2406\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoxw8Ls8f1NGCZmzJ5McGpcJpMsyVM3BXpjS+ypl1/BQIhAK8wS3Q8EDhhRLJubdN1+hUtaCC6rczxq8FBbxzCi2XD"}]},"maintainers":[{"email":"monet@chrisandjo.com","name":"cwmyers"},{"email":"ulfryk@gmail.com","name":"ulfryk"}],"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.1_1579597285849_0.8840831152377253"},"_hasShrinkwrap":false},"0.9.1-460":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.1-460","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=8","npm":">=5"},"dependencies":{},"devDependencies":{"core-js":"3.6.5","eslint":"7.3.1","jasmine":"3.5.0","jasmine-core":"3.5.0","karma":"5.1.0","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"1.3.0","karma-jasmine":"3.3.1","karma-mocha-reporter":"2.2.5","typescript":"3.9.5","uglify-js":"3.10.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"e579a9b9b489e1a320286b2a4f4c319e7295c310","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.1\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.1.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.1.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.1-460","_nodeVersion":"10.24.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-K34FxOLYeZ3wCX7O46Wx6wqhWaWZbJhydym1fhLv6CoLVTwumg5jHgXlFcdaPuBeFx1SuJn2nAz8+gyN7hzdIQ==","shasum":"3e9e6de601dfa10b35870a3f952d3b4a93f6f06b","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.1-460.tgz","fileCount":10,"unpackedSize":79371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPgTSCRA9TVsSAnZWagAAKJYP/AhAepvvLJ5BKcAtidgM\nBkdtGrF9eWWSac0QbeeISp3QupEb/u8ITXFGNE8Mi50/8jXL5PTRqTtwa5++\nZzVs4Ig29xlEtpZpJ7ThQk0YYyDPp4lanD3oMaZXcGnYpiU1DkSfxaBypYHy\nLE7uDpxiENC2/MS1j2dml3GZTfHMYnYycjV3Y2OpGgy5KZlCCWBDnZT8MvTM\nM08bxLSPm8KbsgF2YaW5bHlR+jip8hD6vEBAjnryzdbboSvxwl1iXZoKk3YA\nAnhNpTRwwo8khf3rFQIyGaTw1e+M5gbWdCF3cK2eRk/UDskPuN7KAg8U+wMx\nLI6hwKBP83ngRV6aLvwjJpL1V47fVdvbkZCSzCPseCwVr7jfsgWo5MuH0jjr\nj65rV9gxTktnaL6DTS3lhtrI4gCR8umvHRHKuGm4lqjE8A5srEaMuFdFmSk2\np/yxaN/1xm4+oxzmvGzH44ZmcwQ8BdF6axHvIEdtiTT14dcFlLcRVS24gEN4\nOqZwipbVlvGncBVlJnjoa0gyzyTREZJXHpng4Y8ClYOgUYDbu15/7Ve10xcv\n7ORG6LvmQeTB2cH0YqeqIneAbUWr+zRrIbzA1q8VrzkKZtg2bOc+C2rTuXOb\noxi8SSlMPJqMxJgqk4LOng6c70JRxwa9SNFjBMFWTkJRTeXSN7VmjMD/1RZf\nGCfC\r\n=ByVd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHrRocFHyamXCU3vjZsk5YOJxzvdNheKFP1GdkCjMQROAiAS/XW9NBhk9bO1qHhoQuh78mmmt4/S8NyrkXiM1D7M2g=="}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.1-460_1614677202296_0.8412329351007812"},"_hasShrinkwrap":false},"0.9.1-464":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.1-464","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"7ebaeeeaaad0aa30fc5f45a8b4a9e292ae608ad2","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.1\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.1.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.1.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.1-464","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-c8qo9zeA7oI5R10FQ2UEAyB7CD5d+oYmPJCxgVcSI8DS4e/nCvtdjKVBmJCxoD+FCCmXwQl7lucuACGJ1yduKg==","shasum":"b6344d8466190defdea2ebbaeaa61e59fc33df53","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.1-464.tgz","fileCount":10,"unpackedSize":79373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPkqtCRA9TVsSAnZWagAAdNMQAIb21PQxZ0LtnOL/021N\ncaFsRXxnFOILEfMCwQtW/4cWSnOfE6kEl2iVrADdnyMefWzpl41uKtz61W6d\nyMWSxM84NlDxCtwUaibTINU8QzrF+iXXHjQmYtqQqcOyevcPIxVWubK6BbDo\n3+FIaL/4V+2CqNr+2KPXLDgtMktxBFUTzCrgfwJvgl9ZmHPJRyE4/LKIM+ml\n9vy40HOG4QtGQTBSzClF7oKF2+SjiwqHYmL8cipflU57Iuk0ofGoAK60uat+\n1mtjL7ETuqY0pkn3sHLzrQ0HwAM2RFVIU/ixIqDyoM8HIeReX15SawLn1TrH\n3Ds99OUoMzBxtXF0OlV23rUzUXJGUmqsjcKHaG4l2x0gD4wINDdVMJFumamR\nLU+96glL01j9kgnMTy+K8mrAbSXbN7TJCbXV4X71lHITvgTrDz5zJ3ICDtAv\nfNgq5j9S2el1x0TpIUDUe6aBlzvdD1t5vACFzTZmRH57TWOoWjvwTmiEuEJg\nA+7lqFnbWYtFK+To8qGG10HyDJWybftMZ6cKC1uMtozaqz3bRsyGJTl4cJnY\niTlTheYfygpKtiWrJz/IGg8R1H8IZFrZEcW1CmED7V97RWg+Wawk/gKO3OUx\nncDq9d9qYYXNZ0QPdJZ6CdQOMKMFm0JWfxuQzF8p8bHEUq1iq/h87s5HsFnq\nrasn\r\n=iTEK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDv26c+PpnGAn2Q4lJNHe0H+AAtPsGgo4ehvtKSCRURoAiEAndbdk1dk+igMMC6AkFCuVngvSpoiHYfQFuvkEo2QkcE="}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.1-464_1614695085268_0.9949206147859442"},"_hasShrinkwrap":false},"0.9.1-466":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.1-466","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"b0607cf3658334132906547677d0a98a9841cb03","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.1\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.1.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.1.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.1-466","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-BZZyw7bpflwNJFv9/vZGF4Vb6WOZN3XAeM8MFjxtzL+r7ezxxoKPACxfEbpioR0QTTAe4lV3nLK9IZAxkXXe6Q==","shasum":"f850852ba4ec4d945e176ca9f04042e35cee0a37","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.1-466.tgz","fileCount":10,"unpackedSize":79506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPmfRCRA9TVsSAnZWagAAjFUP/3ps9p91uh7XXDjetwUf\npPE0+B6js2TCDqvUzsfeVmpSQJVGQ9OOD1xgzNQqk6Iq1oSsOQo7DolfKaXH\nqKzxGWejsvkQwqcndA6gGYk30WPMcjfiiPTa85DHSQdYTrcxclHzaROAJrRc\ntnWb60c79/i2bauDu+WEegBIe0622MBkUQZKC4soLfpy6HGqhKmzmMpOZneJ\nE8RsCfxBx5NlknFnXnmgEYmE8eMhIPZRiwTCdf+BMkqIHIyl/gYL8m/d+9sH\ntBOry3ALR8hi6t62xkiJxmpIjs36zctFHRp94wheg6D+uGYuDKWZv9PHa96d\nBsOlDHFpitZ8dQjkH77LuKrFZu2WYnxOhdt5iyS+2Wrv6LCyxTydeRPSLEPy\nagy6YzHtrM5JfHdKb0G+zFMr5Bje07lMJzxelY0X0RALTwHcl9ShvA8FPC5X\nJiCDr4jY749iG7cBdBa/Ysn0JKZGDhGmntrBZPpcOqALM3ISJwwsS3J+veEJ\nXrmHrJYaQXX86FO80Pmo6wwKCnEc0j8qVyB1gydEgl7axjzqHDvfudYEQB7n\nP0dncvVbd5CwGdE5pVlTTWJ1JiCe4hV8rOpVbpPiZPeaV+Z/J6ZEoccnN9gk\nH4Xwu+amfFL6mGiUJCdksNixAYEAmeKAvGfG3beQZc/HGEO+5uMSBrYal9Om\n0pCS\r\n=JZff\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnmgi+D+mCHvdDKn/IVFw7ytcgA9zWccseN+Q6TwpE1AIgbUpWSS7LKMPdagxXAyNnEdHQPNCSILgYrcRlO27yGkc="}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.1-466_1614702544478_0.4879956163330992"},"_hasShrinkwrap":false},"0.9.1-472":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.1-472","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"0cca9183d04450c0da429799181665bf9c98b242","readme":"# monet.js\n\n[![Build Status](https://travis-ci.org/monet/monet.js.svg)](https://travis-ci.org/monet/monet.js)\n\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.1\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.1.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.1.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.1-472","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-NkESiu2ASYY3hiTw9pLI4dPx89AYSU+ZMRe9uhmBoCOUjiw9OfXNDj2K6mzleNpQSL6rA3GFoAt96pIVGbglvQ==","shasum":"7df560e1b21efcd383c8517110df608e31ba2281","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.1-472.tgz","fileCount":10,"unpackedSize":80122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP2DBCRA9TVsSAnZWagAAzEoP/RGJObFhhXDk1xzJPtnT\nUNSCRA1HzEoH5W/JnKua8Zhl0WyqIeieIOkXdrS9AYllTKtiHK0I/Jyrbaa+\nuxILTa8DdDTkOaXNjzESafbi4hzLSrhCyCpW8ofY2raZ6CjQ/zQrpbYPMDCY\nfl14DOUyCFDGtrvihhEXRculwjAmXwSoG3bFvCiY9RhM27SqybzLAVveGqSb\n9vgJ/smyFxfYzYihszgrTEmqFUvbuz0EAkQfqs58yy4PcGZgeMrFYW2fBVRw\nZHqLSmNT0Z2mXb1F2LHcrbHw/iKqWvto+ODtZlYYddpFIAWjNupa4pp0UUJL\nYAMTLMWlH28vgFrTfNlEj9lv82BtEoGQd/xBWJZDC25Z1UdShHAWGw7o/bZv\n1orSxZYmj5dfdLC1gtdfd4i2KJ5xd7MDvpO+OLeo7A1EyvekFx90H7u4+GeI\ntX825CPlpKuKf+k7MQT5qSS8/yG95yX08W3Xpl+3/t7Zy7Qd9BbbNCVSdvTm\n3YuCXNiA5FtuBrs9ZYLPVg75QI1Og5jPQsodqc6OR3Ptx0+ZCli7XxnaMPRF\nn8GZecCtWC4tOmlepgy7kZ1yQUllLFrUXO5RIAHJ2gJQtpVxLrx12bFNJEKp\nzgjmcoJ5eoW9xLUtlKLFaMOD8j8Zq+NibGVUi/GhPwKYxP0XrHCqByUmaFL5\nh3Em\r\n=TPYD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNIuJplEDhvxmMwJBKVd34t5mcDZic2hyfib8HohcFdgIgBYhu5B07jgd6udTBo03elTxwQcDrHUiGhUvoePNlgVA="}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.1-472_1614766273190_0.7993013492355923"},"_hasShrinkwrap":false},"0.9.2-474":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.2-474","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"94f7b9fdb3cf0e24951cce2dc2f11bbcbf5ee303","readme":"# monet.js\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.2\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.2.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.2.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.2-474","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-UWnrzbsX76l49xFalzhUIZN5ZG7bXzYCxBdRtnxxJboWx5eq/PO8QfiCBUFkRP7SD+iCAXPZBeBHZAQy2W3Y1w==","shasum":"034fcf852240cb8bc5b5118fb0fa3258630d671c","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.2-474.tgz","fileCount":10,"unpackedSize":80286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQmcZCRA9TVsSAnZWagAARfIP/j4rRrgnCQhRR/4qCfuM\nm6+UopFjPxdOPwV+/eT5ISeeAoO/EXEQ7Vo3Jefnufydh6c3VNo0uULF6qbl\nQAuNhvb0FMW65GmpdszZgyqqoFFlgyYxEDTMvxLoLQWxMnUePhaqJNihWBdC\n1em6Z+/xg7BC1o8/c1foMlBMFlSk0hY+vjmJnt0mrUc237P033OoAXgUhJZl\nF8puO6Wp/yt/bUst6B7ykUmB47srHXx8Td3K6IIL7MHFK5s7nGX4Gexl7YcM\nVCOZ4N8jtGVd32M54L04aBAbMH/vJ/TCJ8b6Qw6gKkAfRWtu5XbF3UOUcOHW\nWOhv8HK57xEAMsOsOzy95qPJq76iYxWmanMuMS5JRRuZsvSyKz7Yh8luCCXQ\nR4oUY+Q+hHMl9mW4fQ5iwazgPwHRseNNZQbNAwGbTTjpApgoY3iyQ3ZBitMi\nxi22lByTFrl3rrAh5Eznx5wV+soYfeIviGpJEpVuNjFRvvhij3tU9G9WnUxu\nFbObvEjoJuG5KIHuCUGYyVWkd6TB8eNPrZ3RLABDYevthPrafs24WbDNwTTz\nQOid58nMDKeMkh2QMcneFmdVCggwDAShFlr1UMWVm+pTbVGYEHhXuKA+Gr5K\ngwPrvD/RThsgVb1uCjrn5zuUmBsiXqYpObdwzi7NhxusUKeyYDH3Pr+YK/0W\nH51v\r\n=rJCx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERalihxSFEtOO9/OtVT8WTFw33DhVl8poit56DBiF7NAiBY38osKLVR87d1ZFw3tXL1QkXUP9OnaKhIdem4796m1g=="}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.2-474_1614964505312_0.38639930807103084"},"_hasShrinkwrap":false},"0.9.2":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.2","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"b6a4f6a490a6cf579b0f3dfc5c7c986ab16b5689","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.2","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-1InBkZov47As5vn2zyp5mMysip1627Bj0z1yCJyWegeAOnwKOWmIzBd+4tx7ajrALoZdtgx7L0qVwSBP6J7FRQ==","shasum":"c59d4390937a1b021126844b50b993963c6b0ec7","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.2.tgz","fileCount":10,"unpackedSize":80282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQmwSCRA9TVsSAnZWagAA72sQAKH80nl0oOcUYyWjyhP4\nJTkhClL+icASDSMcJ9Dm9B0Y4i2eumoOcJvA180D94MwSoWzDPL6Xx/FUrRO\n/N/0c/ztHugZWRdm8vbYvxWLDuCZoW63bkONNkbhKjqR4PvKdQS7mNax/tHH\nLvjl50hQ3+uwt9/S2g98hUIfL4+N6dAcjvF133ElSm2UD3ZycpZLjPPvbc9j\nm52K01OxA580oLm5KB0tzkR+JUWHmlkxRDa0rtrgkD8v1PS59i5fM547Navf\nA2zW8GFA4ctN6/EcG/Ux4cZtextA1g/wMejpkI8WXK2T3uH0bd7bYwgThxi2\nCOZ5aWhvHCVtnHxonvkKIWgus+Riv2YdxL/I6XPB23OxjP7Rnzc062c3B3p4\nJbnQBx97ueauJYWsCDXhWxICR9ZlxFPmUTkxUxaMiqi88JGgAkH/iwfIiFH+\nPeRhMIf56U01/E4G/kKQJLDNeUuYqE8LVRbgqljXswv82yxdenUNWYOxGEJn\n02P0Tha8p0MOGSOlsSXpFZaooSLN66/s1B9v0wnNzOd9FbrTR03MQL0HAZMn\noSmWM3jboxgV0C63UOeZmlMpAwStYvwSSLUVTJaYvaBb4LL0HNqZxlX0l5d3\nPj60FT+cHxSVweks8V11qJz6VgDm6RdiGKpnklxALPCsIxYbID1K6grMB7OY\nUbZ8\r\n=/tYa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvNlH5Pi5mst7ukrckHYhsxgHrZJbQUjJISUL/mCJqvAIhAL+ZK7VLp7/8btrDC5iVTL7LyJu03akJpcNpOyHQ5nmL"}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.2_1614965777719_0.8019854884517434"},"_hasShrinkwrap":false},"0.9.2-479":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.2-479","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"6c367a47541e49c3b7c8228ca804d2122c5f560c","readme":"# monet.js\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.2\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.2.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.2.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.2-479","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-7FlZ9aC5JEU3W0xBDjdMF01lSwfR2Af+ZiauX+Uru126dKRij+SWYfAuaIhYzx7yeMqDeoH+XjyfAetkOe7vVg==","shasum":"5f2ec012ca309d84eba8fad79ea4426c2e95953d","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.2-479.tgz","fileCount":10,"unpackedSize":80335,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFogbrJItJs/M28DgPoKjq7nxltqyIWDLZBq7HD5IFNAIgUtJQMsSOPhBDlFr1WDUXmlJOGogiO6Z0a0Cpy+4xuME="}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.2-479_1636725123304_0.6890670841805391"},"_hasShrinkwrap":false},"0.9.3":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.3","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"56685952939f4c976be1ce588eb3b1f5eacd2a99","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.3","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-t1hzyR2uXrkENSn1cZC487Tb6FcLUMBvRnCvTT/1SE/uJy6OJR2l9tb80p+tZOuopFK4+Ch4gy0vxr9nkqxT/w==","shasum":"b296747d5dc6dc13f51b4c7e85ed01d787b031a1","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.3.tgz","fileCount":10,"unpackedSize":80425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkqERCRA9TVsSAnZWagAA3A0P/jRuw7bnWjw/lcAc+TOz\nSgRlO54BvYFM7CFEn6PIJK9zFfIKsutimI9AO7z3ZoOFR8Jufdxe/EcuXout\nQueWqf0mdsdY6Znlwho9dOit4d139E+5fAKyoni+Zi7PyHRYaxNrhc5EiSuw\nczdEuEx6ec/1TwiABtEmcIfF742HmcecpfsDRMZUTBbDyPRYZKI7l4cg0DlM\nAPK8ZRPCxuu5eRRZrLNXLVbwpMbd7besiFqU0WIXRgtK1Q/Tb3voOk+A42bt\niHRHOsIJqDtUswRO7ALi4fmttBIo1tLvhp38DshA50vsofcUvxyW2Q6HrpLv\nYhX+Lvuc/ucG5i8AVGGXuLtEs16jjtoqTD/qx3vPo4mE+ZkvsB7UscJNpjfr\nxf/Wll3/m79NWvpTf2mAtuMgGsVmO8W/rf/90TOMqLjiX8ljZ5vM3ME5Dp3M\nKcEbL5ly5hzMy1HVjedxSaKTt6idonNOTTUO7DhQXIkLlE/nQzQbBPRZeAy/\n3+qIU1vAZwVi+KhU+Kmbj4B2T5WNbIev0uYIZPBdqp2rSEMAXadQSvLFIa36\nPl+wE6t+Qu+Pol8O5ODwzmngOQXfYyz9LWK1qmRJF0TByn8nc3J870iFx2a4\nsiADuH2OOZCvKUWyGr06sg6vYqvcP6vBh8a1bwoQVrqOhUKQ+U7wezkL+gcL\nMVQV\r\n=ZRSc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcSgY+KR3aOVx3cWK+PTMvSlSTpMqq0jWDmiCmCH4U6QIhAMNpTKwCbfmfqHtjDrv9XwucqMGVzaJQcl6uTaBmLhBh"}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.3_1636999441603_0.4938468238109217"},"_hasShrinkwrap":false},"0.9.3-483":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.3-483","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"62d65ba5b0d9e7bdf24edab9b0b49409400c0286","readme":"# monet.js\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.3\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.3.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.3.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.3-483","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-okTUFCBR6ObUcsznf5Ce5x9D0yKl7ebfmxjftMeL53pUdOkAHCTtylmy/5kehnH0SIhlp2OOwIiRuYmV9/Vrsg==","shasum":"b61b4e66b4df3c6de1b6d2b7cc13d21e002f6da6","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.3-483.tgz","fileCount":10,"unpackedSize":80429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlz1xCRA9TVsSAnZWagAAcA0QAJ9CoZuqZZdatUZFc8i+\nrVjE5S9yK8cQjxHeMk4W6OQ37ohwlu94u7UzwzqwwtPhsQWQGyJQWybCxS25\njdLLkEq8yeikMH01Z13XtiorxmwxGdBkxvXNVpMBqAbbJxykR2TH+wLqqKKA\nhghJ5q8YqWALChhFw/QFOxK1SblyZfqOBpl0FnkEwQj4f7GA2Dgjg4ZyCKyL\ns9V9fgx9y5IZDuS5Yjfz74PMd2BFGxVRwCd21AREzCIacuex8Yp1DtJ/c5/4\n4XOzVI1gwqMwbkG0wtCtuJpnvz2i+L02Fn2JqZ9JyeikHbwH1YTXUKHKvyLB\nh9ihRXMUPt+EWQjU1asES5aq2jKiwG7bY13YkPD3OLr5WpzP3rS5CujWiFLp\n7uC7rk8IW+AL2Dczu2AQUweKQr77u/6iYiQOAvvhfxO02uvzEqlledJpMos/\n0HM1MJncv0bxTEo8qWoTHMBWIA2fZmTRqqlt9b15nouZjjQ3e82szY3zGR9v\nQmt0Ariv2rerZScs/BKLJwVVVoPcMggBy5+PIhJJV+ia9LvPV4FaR13hkT2A\n/DUe0/g3WEp4VDxSnMkHnBv41+lemxiDMzS/5+jmaPYPDqg3INmP92DHnYOg\nlI9jmXkPGjDjf5aLHv3AVXN2tA47us8g2OzjC8EADsX3AYVSI6NU9e/XjsDY\nqrQc\r\n=mk+T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGZy8TaIDozKiZ3MhgkSPIo2321bcz7+5qfdrE36Kq3hAiBWJXk4P4Km+CzuTXqC0hIX1MJ1smMpj2JXbHKWO5fxRw=="}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.3-483_1637301617835_0.41280823952724677"},"_hasShrinkwrap":false},"0.9.3-485":{"author":{"name":"Chris Myers"},"contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}],"name":"monet","description":"Monadic types library for JavaScript","version":"0.9.3-485","homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"main":"dist/monet.js","typings":"dist/monet.d.ts","license":"MIT","engines":{"node":">=12","npm":">=6"},"dependencies":{},"devDependencies":{"core-js":"3.9.1","eslint":"7.21.0","jasmine":"3.6.4","jasmine-core":"3.6.0","karma":"6.1.1","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"2.1.0","karma-jasmine":"4.0.1","karma-mocha-reporter":"2.2.5","typescript":"4.2.2","uglify-js":"3.13.0"},"scripts":{"lint":"eslint -c .config/eslintrc.json --env browser,node './src/**/*.js'","test":"npm run test:karma && npm run test:node && npm run test:typings && npm run lint && npm run test:build","test:karma":"karma start .config/karma.conf.js","test:node":"jasmine --config=.config/jasmine.json","test:typings":"tsc -p .config/tsconfig.json -m system","test:build":"npm run build && npm run test:prepublish && rm -Rf ./dist","test:prepublish":"npm run test:prepublish:node && npm run test:prepublish:browser","test:prepublish:node":"jasmine --config=.config/jasmine-prepublish-global.json && jasmine --config=.config/jasmine-prepublish.json","test:prepublish:browser":"karma start .config/karma-prepublish-browser.conf.js","tdd":"karma start --auto-watch --no-single-run","tdd-full":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS","tdd-full-osx":"karma start --auto-watch --no-single-run --browsers Chrome,Firefox,PhantomJS,Safari","minify:monet":"uglifyjs dist/monet.js -o dist/monet.min.js --source-map filename=dist/monet.min.js.map -m -c unsafe -v --comments --keep-fnames","minify:monet-pimp":"uglifyjs dist/monet-pimp.js -o dist/monet-pimp.min.js --source-map filename=dist/monet-pimp.min.js.map -m -c unsafe -v --comments --keep-fnames","minify":"npm run minify:monet && npm run minify:monet-pimp","copy:types":"cp src/monet.d.ts dist/","copy:monet":"uglifyjs src/monet.js -o dist/monet.js --comments -b braces=true","copy:monet-pimp":"uglifyjs src/monet-pimp.js -o dist/monet-pimp.js --comments -b braces=true","copy":"npm run copy:monet && npm run copy:monet-pimp && npm run copy:types","build":"rm -Rf ./dist && mkdir dist/ && npm run copy && npm run minify","prepublishOnly":"npm run build"},"gitHead":"7891cf095b5e81d30191bcbb1759fbad0a30a506","readme":"# monet.js\n\nFor people who wish they didn't have to program in JavaScript. [documentation](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Introduction\n\nMonet is a library designed to bring great power to your JavaScript programming. It is a tool bag that assists Functional Programming by providing a rich set of Monads and other useful functions.\n\nThis library is inspired by those that have come before, especially the [FunctionalJava][functionalJava] and [Scalaz][scalaz] projects.\n\nWhile functional programming may be alien to you, this library is a simple way to introduce monads and pure functional programming into your daily practices.\n\n## Documentation\n\nFull detailed documentation can be found [here](https://github.com/monet/monet.js/tree/master/docs/README.md)\n\n## Installation\n\n### NPM\n\n```bash\nnpm install monet --save\n\n# or to install a specific version\nnpm install monet@0.9.3\n```\n\n### Download\n\nDownload the [zip][gitZip] or [tar][gitTar] ball.\n\n### Browser\n\nSimply download and add to your html pages. You can also include `monet-pimp.js` which contains extra functions on the `Object.prototype` for creating monads.\n\n```html\n<script src=\"monet.js\"></script>\n<!-- Optionally -->\n<script src=\"monet-pimp.js\"></script>\n```\n\n## Contents\n\n### [Maybe](https://github.com/monet/monet.js/tree/master/docs/MAYBE.md)\n\nThe `Maybe` type is the most common way of representing *nothingness* (or the `null` type) with making the possibilities of `NullPointer` issues disappear.\n\n`Maybe` is effectively abstract and has two concrete subtypes: `Some` (also `Just`) and `None` (also `Nothing`).\n\n### [Either](https://github.com/monet/monet.js/tree/master/docs/EITHER.md)\n\nEither (or the disjunct union) is a type that can either hold a value of type `A` or a value of type `B` but never at the same time. Typically it is used to represent computations that can fail with an error. Think of it as a better way to handle exceptions. We think of an `Either` as having two sides, the success is held on the right and the failure on the left. This is a right biased either which means that `map` and `flatMap` (`bind`) will operate on the right side of the either.\n\n### [Validation](https://github.com/monet/monet.js/tree/master/docs/VALIDATION.md)\n\nValidation is not quite a monad as it [doesn't quite follow the monad rules](http://stackoverflow.com/questions/12211776/why-isnt-validation-a-monad-scalaz7), even though it has the monad methods. It that can hold either a success value or a failure value (i.e. an error message or some other failure object) and has methods for accumulating errors. We will represent a Validation like this: `Validation[E,A]` where `E` represents the error type and `A` represents the success type.\n\n### [Immutable lists](https://github.com/monet/monet.js/tree/master/docs/LIST.md)\n\nAn immutable list is a list that has a head element and a tail. A tail is another list. The empty list is represented by the `Nil` constructor. An immutable list is also known as a \"cons\" list. Whenever an element is added to the list a new list is created which is essentially a new head with a pointer to the existing list.\n\n### [Non Empty Lists](https://github.com/monet/monet.js/tree/master/docs/NEL.md)\n\nMuch like the immutable list, a Non Empty List can never be empty. It implements the `comonad` pattern. It has a guaranteed head (total)\nand a guaranteed (total) tail.\n\n### [IO](https://github.com/monet/monet.js/tree/master/docs/IO.md)\n\nThe `IO` monad is for isolating effects to maintain referential transparency in your software. Essentially you create a description of your effects of which is performed as the last action in your programme. The IO is lazy and will not be evaluated until the `perform` (*alias* `run`) method is called.\n\n### [Reader](https://github.com/monet/monet.js/tree/master/docs/READER.md)\n\nThe `Reader` monad is a wonderful solution to inject dependencies into your functions. There are plenty of great resources to get your\nteeth into the `Reader` monad such as [these great talks](http://functionaltalks.org/tags/#reader%20monad).\n\nThe `Reader` monad provides a way to \"weave\" your configuration throughout your programme.\n\n### [Free](https://github.com/monet/monet.js/tree/master/docs/FREE.md)\n\nThe `Free` monad is a monad that is able to separate instructions from their interpreter. There are many applications for this monad, and one of them is for implementing Trampolines, (which is a way to make recursion constant stack for languages that don't support tail call elimination, like JavaScript!).\n\nPlease see [Ken Scambler](http://twitter.com/KenScambler)'s [excellent talk](http://www.slideshare.net/kenbot/running-free-with-the-monads) and [example project](https://github.com/kenbot/free) to get an in-depth understanding of this very useful monad.\n\n## Author\n\nWritten and maintained by Chris Myers [@cwmyers](https://twitter.com/cwmyers) and Jakub Strojewski [@ulfryk](https://twitter.com/ulfryk). Follow Monet.js at [@monetjs](http://twitter.com/monetjs).\n\n[functionalJava]: http://functionaljava.org/\n[gitZip]: https://github.com/monet/monet.js/archive/v0.9.3.zip\n[gitTar]: https://github.com/monet/monet.js/archive/v0.9.3.tar.gz\n[npm]: https://www.npmjs.com/\n[scalaz]: https://github.com/scalaz/scalaz\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/monet/monet.js/issues"},"_id":"monet@0.9.3-485","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-OzOq07BeJLStu6x3tBIuYBeQzXAKYc1NeE4V7iY/9BbD952WORn0slegiFyxzPkdu60nzSMPOfJWovb4iCaU0g==","shasum":"3f80c0a9cdcff5281ee65f0b3e029068ac2208bd","tarball":"https://registry.npmjs.org/monet/-/monet-0.9.3-485.tgz","fileCount":10,"unpackedSize":80429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJho5NECRA9TVsSAnZWagAAQBsP/RIXmp19w3HP8AtoSvv5\nAjdEnbRbQF5GbCA9TcDTPMyDdLtANoiK/YQW+J08U4DJOu99Gi8cchqIzJlA\nZ8XbbOVN1bdNcVCVjYW4QqtbcSv5ONg+TsY35hJ2lSheGB5l0vHey6NySxqO\nMx7ILi8dwSj39ouKRORDwhjk2glVIJ9HM0dTz/0ST69hREYAUccD+nxEIURx\nQkX5VtOdDyDRdk5ybU1lhmVyjJGk1YrcikehrND4uz/EubMu8dLMblOZOd85\n8nRoXN1IFELwfEYm89NkHRD7w50Y9RJOlOdqhfdkkXhBDTEr9pawlpRmyRlW\n0RJCB22wC2i772UjGLOFQU3WAEjfyj7NTuSn8btmjlisqtzXwFUhZDQDKUw+\n6f8WzkS+K/WFenx03exAGdf0AqhUjVnH9o4aEzJlSWq26dz4yIgwMd/BIxy0\na6OHEACaSLxZ1SchG3mzI9srLLKbiP0upOMnQv4+4cy/l3Ms+3zcK5iwmkt2\nWjIOKMeZAhelr9/T1r847QS/0Y6nbfvnwueU8WqRRj/3VC3av3zodtzfFo1O\nVHkYZNyYtlq25U9vNIqzcVR+BstNgJtUIgZxZr4tehBdz1Wx7v3IAeZl7s8Y\nqCXp4bS9+dIvRLBp0gqA7UTKF5ia0qnCt7wV15MP/g38GooWsq38JBOHHGC6\nqB2w\r\n=n/6A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA5Fxt1iK3RwJO4mn+tHYqDfPp0q5hXZoa6VRKnT55ZJAiEA9iTIjfiUGyDJdiOdmZYlV/yj/xxI8w5w6eCFaZRqSgA="}]},"_npmUser":{"name":"ulfryk","email":"ulfryk@gmail.com"},"directories":{},"maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monet_0.9.3-485_1638110019999_0.2137898017454698"},"_hasShrinkwrap":false}},"readme":"","maintainers":[{"name":"cwmyers","email":"monet@chrisandjo.com"},{"name":"ulfryk","email":"ulfryk@gmail.com"}],"time":{"modified":"2022-06-20T05:31:53.332Z","created":"2014-12-15T06:25:06.006Z","0.8.4":"2014-12-15T06:25:06.006Z","0.8.5":"2014-12-15T23:34:09.300Z","0.8.6":"2015-09-18T03:55:56.667Z","0.8.7":"2016-02-07T03:24:06.023Z","0.8.8":"2016-03-26T00:46:42.496Z","0.8.9":"2016-04-19T06:05:06.058Z","0.8.10":"2016-04-25T07:09:56.110Z","0.9.0-alpha.0":"2016-10-24T10:10:40.323Z","0.9.0-alpha.1":"2016-10-24T20:53:57.686Z","0.9.0-alpha.2":"2016-10-25T12:26:40.530Z","0.9.0-alpha.3":"2017-06-19T18:54:41.215Z","0.9.0-alpha.4":"2017-06-19T21:09:52.145Z","0.9.0-alpha.5-0":"2018-04-05T20:05:28.337Z","0.9.0-alpha.5-1":"2018-04-05T20:14:32.199Z","0.9.0-alpha.5-2":"2018-06-15T11:16:21.843Z","0.9.0-alpha.5-3":"2018-06-15T11:38:58.450Z","0.9.0-alpha.5-4":"2018-06-15T12:11:14.845Z","0.9.0-alpha.5-353":"2018-06-17T00:26:49.187Z","0.9.0-alpha.5-356":"2018-06-17T20:50:09.386Z","0.9.0-rc.0-358":"2018-06-18T08:39:23.150Z","0.9.0-rc.0-361":"2018-06-18T09:09:29.943Z","0.9.0-rc.0":"2018-06-18T21:51:26.297Z","0.9.0-rc.1":"2018-09-18T08:02:07.784Z","0.9.0-rc.1-379":"2018-09-18T08:07:26.384Z","0.9.0-rc.1-383":"2018-10-04T12:15:48.198Z","0.9.0-rc.1-385":"2018-10-16T05:31:08.070Z","0.9.0-rc.1-391":"2018-11-18T11:52:26.269Z","0.9.0-rc.2-393":"2018-11-18T12:02:36.433Z","0.9.0-rc.2":"2018-11-18T12:07:29.268Z","0.9.0-rc.3-399":"2018-11-18T14:22:58.221Z","0.9.0-rc.3":"2018-11-18T14:33:08.594Z","0.9.0-403":"2018-11-20T07:04:00.620Z","0.9.0-405":"2018-11-20T07:21:08.718Z","0.9.0-408":"2018-11-20T07:42:20.422Z","0.9.0":"2018-11-20T07:46:25.646Z","0.9.0-414":"2019-05-23T14:16:02.903Z","0.9.0-417":"2019-05-29T16:05:23.300Z","0.9.0-421":"2019-06-03T14:17:29.577Z","0.9.0-422":"2019-06-03T14:18:29.866Z","0.9.0-423":"2019-06-03T14:20:29.455Z","0.9.0-426":"2019-09-09T11:05:03.102Z","0.9.0-431":"2020-01-14T07:17:27.622Z","0.9.0-441":"2020-01-15T08:07:43.691Z","0.9.1-444":"2020-01-15T13:57:54.341Z","0.9.1-447":"2020-01-16T08:06:12.479Z","0.9.1":"2020-01-21T09:01:25.981Z","0.9.1-460":"2021-03-02T09:26:42.433Z","0.9.1-464":"2021-03-02T14:24:45.514Z","0.9.1-466":"2021-03-02T16:29:04.700Z","0.9.1-472":"2021-03-03T10:11:13.356Z","0.9.2-474":"2021-03-05T17:15:05.537Z","0.9.2":"2021-03-05T17:36:17.909Z","0.9.2-479":"2021-11-12T13:52:03.488Z","0.9.3":"2021-11-15T18:04:01.737Z","0.9.3-483":"2021-11-19T06:00:17.971Z","0.9.3-485":"2021-11-28T14:33:40.154Z"},"homepage":"https://monet.github.io/monet.js/","repository":{"type":"git","url":"git+ssh://git@github.com/monet/monet.js.git"},"author":{"name":"Chris Myers"},"bugs":{"url":"https://github.com/monet/monet.js/issues"},"readmeFilename":"","users":{"moimikey":true,"joypeterson":true,"garrickajo":true},"license":"MIT","contributors":[{"name":"Jakub Strojewski","email":"ulfryk@gmail.com"},{"name":"emmanueltouzery"},{"name":"tomecko"},{"name":"WojciechP"},{"name":"wookieb"},{"name":"rparree"},{"name":"customcommander"}]}