diff --git a/src/main/java/com/jnape/palatable/lambda/monoid/Monoid.java b/src/main/java/com/jnape/palatable/lambda/monoid/Monoid.java
index 8ecf83775..59f4ce1c7 100644
--- a/src/main/java/com/jnape/palatable/lambda/monoid/Monoid.java
+++ b/src/main/java/com/jnape/palatable/lambda/monoid/Monoid.java
@@ -82,7 +82,7 @@ default A foldLeft(A a, Iterable as) {
*/
@Override
default Lazy foldRight(A a, Iterable as) {
- return lazy(() -> flip().foldMap(id(), reverse(cons(a, as))));
+ return lazy(() -> flip().foldMap(id(), cons(a, reverse(as))));
}
/**
diff --git a/src/main/java/com/jnape/palatable/lambda/semigroup/Semigroup.java b/src/main/java/com/jnape/palatable/lambda/semigroup/Semigroup.java
index a061328ce..d4cc1e6b4 100644
--- a/src/main/java/com/jnape/palatable/lambda/semigroup/Semigroup.java
+++ b/src/main/java/com/jnape/palatable/lambda/semigroup/Semigroup.java
@@ -39,7 +39,7 @@ default A foldLeft(A a, Iterable as) {
* @see FoldRight
*/
default Lazy foldRight(A a, Iterable as) {
- return FoldRight.foldRight((y, lazyX) -> lazyX.fmap(x -> apply(x, y)), lazy(a), as);
+ return FoldRight.foldRight((y, lazyX) -> lazyX.fmap(x -> apply(y, x)), lazy(a), as);
}
/**
diff --git a/src/test/java/com/jnape/palatable/lambda/functions/builtin/fn3/FoldRightTest.java b/src/test/java/com/jnape/palatable/lambda/functions/builtin/fn3/FoldRightTest.java
index 912ee9b4a..62f6d43c9 100644
--- a/src/test/java/com/jnape/palatable/lambda/functions/builtin/fn3/FoldRightTest.java
+++ b/src/test/java/com/jnape/palatable/lambda/functions/builtin/fn3/FoldRightTest.java
@@ -29,7 +29,7 @@ public Fn1, Iterable