diff --git a/bower.json b/bower.json index 26c4bb3..fdb8510 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "monet", - "version": "0.8.3", + "version": "0.8.4", "main": ["src/main/javascript/monet.js","src/main/javascript/monet-pimp.js"], "ignore": [ "**/.*", diff --git a/component.json b/component.json index cbb6f40..7d866f5 100644 --- a/component.json +++ b/component.json @@ -1,6 +1,6 @@ { "name": "monet", - "version": "0.8.3", + "version": "0.8.4", "scripts": [ "src/main/javascript/monet.js", "src/main/javascript/monet-pimp.js" diff --git a/package.json b/package.json index 9e86c54..79b94e7 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "Chris Myers", "name": "monet", "description": "Monadic types library for JavaScript", - "version": "0.8.3", + "version": "0.8.4", "homepage": "https://github.com/cwmyers/monet.js", "repository": { "type": "git", diff --git a/src/main/javascript/monet-pimp.js b/src/main/javascript/monet-pimp.js index 4dae038..72b3f2e 100644 --- a/src/main/javascript/monet-pimp.js +++ b/src/main/javascript/monet-pimp.js @@ -1,4 +1,4 @@ -// monet-pimp.js 0.8.3 +// monet-pimp.js 0.8.4 // This file needs to be included after monet.js diff --git a/src/main/javascript/monet.js b/src/main/javascript/monet.js index 4111f1b..41280ce 100644 --- a/src/main/javascript/monet.js +++ b/src/main/javascript/monet.js @@ -1,4 +1,4 @@ -// Monet.js 0.8.3 +// Monet.js 0.8.4 // (c) 2012-2014 Chris Myers // Monet.js may be freely distributed under the MIT license. @@ -354,6 +354,9 @@ foldLeft: function (initialValue) { return this.toList().foldLeft(initialValue) }, + foldRight: function (initialValue) { + return this.toList().foldRight(initialValue) + }, filter: function (fn) { return listFilter(this.toList(), fn) }, diff --git a/src/test/javascript/list_spec.js b/src/test/javascript/list_spec.js index 4b92739..dc5e103 100644 --- a/src/test/javascript/list_spec.js +++ b/src/test/javascript/list_spec.js @@ -58,6 +58,18 @@ describe("An immutable list", function () { })).toEqual(10) }) + it("can be reversed using foldLeft and cons", function () { + expect(list.foldLeft(Nil)(function (acc, e) { + return acc.cons(e) + }).toArray()).toEqual([4,3,2,1]) + }) + + it("can not be reversed using foldRight and cons", function () { + expect(list.foldRight(Nil)(function (e, acc) { + return acc.cons(e) + }).toArray()).toEqual([1,2,3,4]) + }) + it("will have cons available on objects", function () { expect("fun".cons(list).toArray()).toEqual(["fun", 1, 2, 3, 4]) }) diff --git a/src/test/javascript/nel_spec.js b/src/test/javascript/nel_spec.js index bb089f8..37936c8 100644 --- a/src/test/javascript/nel_spec.js +++ b/src/test/javascript/nel_spec.js @@ -82,5 +82,17 @@ describe("A Non-Empty immutable list", function () { }) + it("can be reversed using foldLeft and cons", function () { + expect(nonEmptyList.foldLeft(Nil)(function (acc, e) { + return acc.cons(e) + }).toArray()).toEqual([4,3,2,1]) + }) + + it("can not be reversed using foldRight and cons", function () { + expect(nonEmptyList.foldRight(Nil)(function (e, acc) { + return acc.cons(e) + }).toArray()).toEqual([1,2,3,4]) + }) + })