diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -46,4 +46,8 @@
 
 # 1.2.4.0 -- 2022-07-26
 
-* Adding Alternative instance
+* Adding Alternative instance
+
+# 1.3.0.0 -- 2022-07-28
+
+* Correction of cartesianProductOfSet
diff --git a/WeakSets.cabal b/WeakSets.cabal
--- a/WeakSets.cabal
+++ b/WeakSets.cabal
@@ -14,7 +14,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:            1.2.4.0
+version:            1.3.0.0
 
 -- A short (one-line) description of the package.
 synopsis:
diff --git a/src/Data/WeakSet.hs b/src/Data/WeakSet.hs
--- a/src/Data/WeakSet.hs
+++ b/src/Data/WeakSet.hs
@@ -164,7 +164,7 @@
     , traverseSet
     , sequenceSet
     , anElement
-    , cartesianProductOfSet
+    , cartesianProductOfSets
     
 ) where
 import              Prelude         hiding (filter, splitAt, drop, take, map, foldr, foldl, length, elem, maximum, minimum, sum, product, concat, concatMap, and, or, any, all, maximumBy, minimumBy, notElem, find, null)
@@ -555,10 +555,9 @@
 anElement (Set []) = error "Data.WeakSet.anElement: empty set"
 anElement (Set (x:xs)) = x
 
--- | Return the cartesian product of a set of set.
-cartesianProductOfSet :: Set (Set a) -> Set (Set a)
-cartesianProductOfSet (Set []) = Set ([Set []])
-cartesianProductOfSet (Set (x:xs)) = (\(y,ys) -> insert y ys) <$>  x |*| (cartesianProductOfSet (Set xs))
+-- | Return the cartesian product of a collection of sets.
+cartesianProductOfSets :: (Monoid (m a), Monad m, Foldable m, Eq a) => m (Set a) -> Set (m a)
+cartesianProductOfSets t = Foldable.foldr (\s result -> ((<>).pure <$> s) <*> result) (set $ pure $ mempty) t 
 
 -- | /O(n^2)/. Fold the elements in the set using the given right-associative binary operator.
 --
diff --git a/src/Data/WeakSet/Safe.hs b/src/Data/WeakSet/Safe.hs
--- a/src/Data/WeakSet/Safe.hs
+++ b/src/Data/WeakSet/Safe.hs
@@ -25,7 +25,7 @@
     (|^|),
     nubSetBy,
     anElement,
-    cartesianProductOfSet,
+    cartesianProductOfSets,
 )
 where
     import              Data.WeakSet
