{"_id":"coffee-monad","_rev":"32-a212b2fcd30d6f3967d19a071391c9bb","name":"coffee-monad","description":"Monad implementations in Coffeescript","dist-tags":{"latest":"0.1.5"},"versions":{"0.0.1":{"name":"coffee-monad","version":"0.0.1","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"description":"coffee-monad ============","bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.1","dist":{"shasum":"95c5a48940a0b9150e93fc0c6103f2ab0b61c07b","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.1.tgz","integrity":"sha512-OojWUpcdTpbUAVTVghP6EnxIcjOjDJ8L7CjKou3AZO6LfgTeSyzOYKkA5dv20bgsV1b2q/N+j3/hIcSbQeSPoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCnZ5TpHD7Vja0IMMfmRnpqHODWnPOsLTqgKkW19yT6gIhAMH2byL23FuE3ZP/l4DR3xgX0JyGFvo26iocraAteCWX"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.0.2":{"name":"coffee-monad","version":"0.0.2","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"description":"coffee-monad ============","bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.2","dist":{"shasum":"285be69643174ccf8d55957a89d4480128bbf8b0","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.2.tgz","integrity":"sha512-g24M/UIL8fO8r+3nseQLSVxAxqQYmBO+/taZZFNTs7R6+RTmMhRlht+OM0bU7EE+/lNYfCozDNITTPdMIFEnDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErymJ4vLltSZXztRTG5uFXgLoRleo0lFN0IqLBEhrCHAiBGgFOhSp9x/nhOJxebt+mYIGX0buuvCAZzSTnMIBH+rA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.0.3":{"name":"coffee-monad","discription":"Monad implementations in Coffeescript","version":"0.0.3","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"description":"coffee-monad ============","bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.3","dist":{"shasum":"9570556e22736de6953ce2d30897e6b3991bdf31","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.3.tgz","integrity":"sha512-K/gBHT8V8Yqip8oZrYa8SbaVjiKMSFengx//JFfGiPthO5NVyt7h9Pb1EDM03adjOZQEsAoDMTQ1kddJz73uow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBQ7ZiSldUZKXeeZCGd8+IXSCXD5kHKWhHaiH1xBa1yQIgKymnYlKRVVwluSzuWY9sCliG71FD2bcSqnv39LA7kgY="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.0.4":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.0.4","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.4","dist":{"shasum":"3eb87880ba88dd8451f85d2b2d1e2a044be5d705","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.4.tgz","integrity":"sha512-dogQmUofwCw9JyHqKLS6mx472ZS23J2RgvQVruog1/0QPuuUTW1HDkd/IYBRdyPiDO1RLvS0TrrvAF9lmCLQHA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0CCYdARzXDHLzvwm8UqJbW5QLuNHR+tVq7O1i8b4X+QIhAJFPPrlEgqSQv50xbY2ZwxQ3AtqDYO8dOBIp+c/5Uz2M"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.0.5":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.0.5","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.5","dist":{"shasum":"67267ed51ba39a15cb003ca8231e8c9908e8e53c","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.5.tgz","integrity":"sha512-/vjUTe55RRJ237EG30RUZdvjaYWpwCBCpgJSEU3+TjBXQktSPsGhhKtk1J99kxr9f2NGt/cDJbElSd93nSZL6Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCF95O0Zqa8AluJLfaswNkA3WYZzmvtoj4j7CCss3v7FgIhAOelIO1kIlPomfNiRtd58bGh+2TPlJURQKsJ4N+QEmYX"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.0.6":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.0.6","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.6","dist":{"shasum":"6f924467a8142573f834f32c8462b9c8d61fd813","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.6.tgz","integrity":"sha512-chKNE6Nba+fni/vhE4oyfzP7mU1FK+wPDfdRnsdygThqGT/Gol7HObBK8iEHoLHmxpzBKfKIeS3C+8qteNXdeA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHw86yIPY2iwczSIrLdvAR7hObRTLyaWY5+nhsz/NQ62AiAvZN9ivjKCRD12m2qCI0XQvFxtAGvYxfX/Xx1gn5As5g=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.0.7":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.0.7","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.7","dist":{"shasum":"ab28cef2884b99229abede945553e6028558f1f1","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.7.tgz","integrity":"sha512-5QVrpMcXfJV8ORxkuuAgzXvFBF2Eo26ZdxXKzesC5Qg1IKMzd1MyPj4wkC/vJ7wy6j+8I4jisNCftlB6C/vFpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbIRP7CjIN68LiPS743SWgH8vDPG0/7qvvdqYiLgdmkwIgTFmx8sDBg2gp4p/uZV0gUhENkWioUYwCIX+9O2LqcM8="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.0.8":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.0.8","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.8","dist":{"shasum":"7b935670f38694999807759a36acc43b95413509","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.8.tgz","integrity":"sha512-8lk0BxnWa4tWMynWkn1FaVb+pJe+uNb4T2esfD4TTLACXrgtDFRwtHd6gP/h4SLf11l2KoTtecack3fUBk2VeQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDTjhJ7e8fQ4MqNo6rppxc0GKoXSdEMrvlrVZmqkBULmAiAHDC/mVBwEIHd/F803c3gCf6GKplfshJgp6dzXX6+EOQ=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.0.9":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.0.9","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.0.9","dist":{"shasum":"bb03bfbcb133a05009a9d1d263bf5a0e5bdd6883","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.0.9.tgz","integrity":"sha512-Is3+x7sg3F8L6fwuFp962cgHPczv/+Ud8YVPhqCP+RXFkFFtK49ykh9DwJQKNpMYMf2vaO/dMKTrvaA7TphvZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYrZLUBksVUuFweOBHxpx/5RhQqjGRYz98UWu/WLkiAQIgBiBiOVkYbBVMo1ZZjn3+9DgwCfBjonR1Vs0H6kJ//Sw="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.1.0":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.1.0","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.1.0","dist":{"shasum":"000d2fe4b81cd4b87f487699d4c03415cc8d270c","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.1.0.tgz","integrity":"sha512-4VL0zK7Hbykla9cocaFRPfunIqhVzf2SPWWqUitqzxa23pqkrqQ4Hzh3p7DkQGnxUnObHbLeHuoPW9VeMEHOsg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiLdRze4fetBRyVvev+ZSor7rizKBjrPXDOwdpe7ZiCQIgO4eEO0VJKH3ljBd4HeL6xI4Imvx6XZiX0AXfnkATG84="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.1.1":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.1.1","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.1.1","dist":{"shasum":"baddf59b23fec02d2d08a5c9cd39f978a78da25f","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.1.1.tgz","integrity":"sha512-K64rnJbdXZ04/NIjzQV/2DIT+fHVzWwt7cT1f2jKycOD3PMkqLyONZpSxtTsQktJNIntW7S2kTWBQDygSJLFWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9awu+8iTmR/hAuqXdqr21LVrj8zxDaus8BsCe2ua/DQIgZBLAIKaqd8NDbpW212MwmZrINSQ3Y/sl4DtOHdRrNbw="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.1.2":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.1.2","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.1.2","dist":{"shasum":"0e8e5b587b64d9b75acf51450e22b77dd1036d35","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.1.2.tgz","integrity":"sha512-VkBIb7a4tsvKt/J0QW4x7RysCQKQbBewVDlmAvNpqPCByFzixcw0kdI6IBcTARtYFcqiBZ6sMHOR8Py0dk8CYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICv4KtBk8xNnpndsZBFc8BGvXvj3rabHHNjUZP0db496AiBOsqA0fIcNCqhq3h01lkMzwXc37GLKORQbtJb1C/btQg=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.1.3":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.1.3","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.1.3","dist":{"shasum":"b6d8fbfc660c03cf4faef292f27c5fec0c91ba9d","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.1.3.tgz","integrity":"sha512-zi80GgQhmzMzEAOV8Ykyo9pUZ/w/iQZyf/o3/zt6snUilbb7Z88PdpDSL2gHq+WyR/tvLz3s47ygiez7DdGijw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIfkL+J/81u8hPT6+SAlNs8B2yRWGNzIepVbyaiy0fDgIgKk+PCRyO23a73SLjwNqXPqN7kaC7L/H5biw3hDcRQe0="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.1.4":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.1.4","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.1.4","dist":{"shasum":"fc4afeb31318cdb820ffa4257b58125268a579fd","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.1.4.tgz","integrity":"sha512-uWrpd7/kvV3zBCrY44MnsycEkEo8CcJF+68oE+/Y8F3eZ4GA+RWf18SZGXb152Nwc84adNWHnkUqaZYRnL4Wag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+ULrwbVlnqUfUjw0N21QeDrnk9rhW1MMdYQuC6mbfSAIgHjCqCjLT+VjyIJybfKgDkdTPYL9CB+5ZAjCPriAXSlE="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]},"0.1.5":{"name":"coffee-monad","description":"Monad implementations in Coffeescript","version":"0.1.5","main":"./monad.coffee","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"test":"jasmine-node --coffee --verbose spec/"},"repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"license":"BSD","dependencies":{"readline-sync":"*"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"homepage":"https://github.com/peking2/coffee-monad","_id":"coffee-monad@0.1.5","dist":{"shasum":"9ee0714800f8991ff6804400616fdccad0f6316f","tarball":"https://registry.npmjs.org/coffee-monad/-/coffee-monad-0.1.5.tgz","integrity":"sha512-85ieVwKgw4K4yb/b2fHccqJrQna7Z7Lkvl+Fxm9HUbl9lnnMOkKyFw5znEEuzDvPWMiQbbruc2eM+LZhcmnxkg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaXh7sxM8/RlcgKGHFdPM3iWWffH8IyKPkHRUEWJG08gIhALws+ihOO3xJf4Plpkdm902Q+hvrjBgMtG6/jJre6ASl"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"peking2","email":"garyzhao@live.com"},"maintainers":[{"name":"peking2","email":"garyzhao@live.com"}]}},"readme":"Learn You Monad in Coffeescript\n============\nMonad implementations in Coffeescript for learning and practice.\nThe goal is to make it as a guide for Coffeescript programmers to learn Monads.\n\n## What is Monad?\n* In general, Monad is a design pattern\n* Specifically, Monad is a data structure which implements [Monad type class](#monad-type-class) and\nsatisfies [Monad laws](#monad-laws)\n\nMonad was introduced in Haskell, but any language which supports higher order functions can implement Monads,\nsuch as **Javascript**/**Coffeescript**\n\n## Monad type class\nType class is a concept in Haskell. You can treat it as an interface in Java. Monad type class defines two functions,\nunit and return.\n* unit is to wrap a value into a monad. In Haskell it's named **return**.\n* bind is to unwrap the value and apply it to a function which takes the value as input and outputs a monad.\nIn Haskell, it's **>>=** and in Scala it's **flatMap**.\n\nWe use Monad's name as unit function for conveniences, so you can write Maybe(5) instead of Maybe.unit(5).\n\nIn Haskell, bind function is infix operator >>=, so when you bind, it looks like\n```haskell\nm >>= \\ a -> m\n```\nJavascript doesn't support operator overloading, so it would look like\n```coffeescript\nbind m (a)-> m\n```\nIt's not as convenient as Haskell, so we leverage Javascript's OO nature and make bind as a method of monad. Thus it looks like\n```coffeescript\nm.bind (a)-> m\n```\n\n## Monad laws\n* **Left identity:** ```unit(a).bind f == f a```\n* **Right identity:** ```m.bind unit == m```\n* **Associativity:** ```(m.bind f).bind g == m.bind (x)-> f(x).bind g```\n\n## How to use monad\n### Haskell\n\n```haskell\ndo\n  a <- m(a)\n  b <- m(b)\n  c <- m(c)\n  return (a+b+c)\n\n    ||\n    \\/\n\nm(a) >>= \\a -> m(b) >>= \\b -> m(c) >>= \\c m(a+b+c)\n```\n### Coffeescript\n```coffeescript\nm(a).bind (a)->\n  m(b).bind (b)->\n    m(c).bind (c)->\n      m(a+b+c)\n```\nHaskell has do-notation, but it's actually syntax sugar for bind(>>=).\nCoffeescript doesn't support do-notation, but it looks like similar to Haskell binding combinations.\n\n## Installation\n\n```bash\n$ npm install coffee-monad\n```\n\n## Unit Test\n\n```bash\n$ jasmine-node --coffee --verbose spec/\n```\n## Change Log\n* update README (Dec. 1, 2014)\n* State monad (Nov. 30, 2014)\n* Writer, Reader monad (Nov. 29, 2014)\n* IO monad (Nov. 29, 2014)\n* Maybe, List monad (Nov. 28, 2014)","maintainers":[{"name":"peking2","email":"garyzhao@live.com"}],"time":{"modified":"2022-06-13T06:27:44.703Z","created":"2014-11-29T10:09:08.572Z","0.0.1":"2014-11-29T10:09:08.572Z","0.0.2":"2014-11-29T10:14:09.634Z","0.0.3":"2014-11-29T10:18:10.114Z","0.0.4":"2014-11-29T10:18:43.564Z","0.0.5":"2014-11-29T10:21:36.668Z","0.0.6":"2014-11-29T10:23:14.430Z","0.0.7":"2014-11-29T10:24:05.697Z","0.0.8":"2014-11-29T22:01:27.762Z","0.0.9":"2014-11-30T05:14:37.337Z","0.1.0":"2014-11-30T13:11:56.254Z","0.1.1":"2014-12-01T04:24:35.595Z","0.1.2":"2014-12-01T08:43:03.280Z","0.1.3":"2014-12-01T08:52:07.707Z","0.1.4":"2014-12-02T02:21:26.836Z","0.1.5":"2014-12-03T06:26:20.807Z"},"homepage":"https://github.com/peking2/coffee-monad","repository":{"type":"git","url":"https://github.com/peking2/coffee-monad.git"},"author":{"name":"Gary Zhao","email":"garyzhao@live.com"},"bugs":{"url":"https://github.com/peking2/coffee-monad/issues"},"license":"BSD","readmeFilename":"README.md"}