Class of semigroups that can be split into irreducible (i.e., atomic or prime) factors in a unique way. Factors of a Product are literally its prime factors:
factors (Product 12) == [Product 2, Product 2, Product 3]Factors of a list are not its elements but all its single-item sublists:
factors "abc" == ["a", "b", "c"]The methods of this class satisfy the following laws:
maybe id sconcat . nonEmpty . factors == id
List.all (\prime-> factors prime == [prime]) . factors
primePrefix s == foldr const s s
foldl f a == List.foldl f a . factors
foldl' f a == List.foldl' f a . factors
foldr f a == List.foldr f a . factorsA minimal instance definition must implement factors or foldr. Other methods can and should be implemented only for performance reasons.
Methods
factors :: m -> [m]Returns a list of all prime factors; inverse of mconcat.
primePrefix :: m -> mThe prime prefix;
primePrefix mempty == memptyfor monoids.primeSuffix :: m -> mThe prime suffix;
primeSuffix mempty == memptyfor monoids.foldl :: (a -> m -> a) -> a -> m -> afoldl' :: (a -> m -> a) -> a -> m -> afoldr :: (m -> a -> a) -> a -> m -> alength :: m -> IntfoldMap :: Monoid n => (m -> n) -> m -> nGeneralizes foldMap from Data.Foldable, except the function arguments are prime factors rather than the structure elements.
reverse :: m -> m
Instances26Factorial, …
Factorial ByteStringDefined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial ByteStringDefined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial IntSetDefined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial ByteStringUTF8Defined in monoid-subclasses-1.2.5.1 · Data.Monoid.Instances.ByteString.UTF8Factorial TextDefined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial TextDefined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial ()Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialIntegral a => Factorial (Product a)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialOrd a => Factorial (Set a)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial (IntMap a)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial (Seq a)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial (Vector a)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial [x]Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial a => Factorial (Dual a)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialFactorial a => Factorial (Maybe a)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.FactorialStableFactorial m => Factorial (OffsetPositioned m)Defined in monoid-subclasses-1.2.5.1 · Data.Monoid.Instances.Positioned(Integral a, Eq a) => Factorial (Sum a)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.Factorial(FactorialMonoid m, StableFactorial m) => Factorial (Shadowed m)Defined in monoid-subclasses-1.2.5.1 · Data.Monoid.Instances.PrefixMemory(Factorial a, PositiveMonoid a) => Factorial (Concat a)Defined in monoid-subclasses-1.2.5.1 · Data.Monoid.Instances.Concat(StableFactorial a, MonoidNull a) => Factorial (Measured a)Defined in monoid-subclasses-1.2.5.1 · Data.Monoid.Instances.Measured(StableFactorial m, TextualMonoid m) => Factorial (LinePositioned m)Defined in monoid-subclasses-1.2.5.1 · Data.Monoid.Instances.PositionedOrd k => Factorial (Map k v)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.Factorial(FactorialMonoid a, FactorialMonoid b) => Factorial (Stateful a b)Defined in monoid-subclasses-1.2.5.1 · Data.Monoid.Instances.Stateful(Factorial a, Factorial b, MonoidNull a, MonoidNull b) => Factorial (a, b)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.Factorial(Factorial a, Factorial b, Factorial c, MonoidNull a, MonoidNull b, MonoidNull c) => Factorial (a, b, c)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.Factorial(Factorial a, Factorial b, Factorial c, Factorial d, MonoidNull a, MonoidNull b, MonoidNull c, MonoidNull d) => Factorial (a, b, c, d)Defined in monoid-subclasses-1.2.5.1 · Data.Semigroup.Factorial