# The semigroups-actions package

[ Tags: algebra, bsd3, data, data-structures, library, math ] [ Propose Tags ]

In mathematics, an action of a semigroup on a set is an operation that associates each element of the semigroup is with a transformation on the set.

## Properties

Versions 0.1 base (>=2 && <5), containers (>=0.3 && <0.6), semigroups (==0.8.*) [details] BSD3 Copyright (C) 2012 Petr Pudlák Petr Pudlák Petr Pudlák Algebra, Data, Data Structures, Math http://github.com/ppetr/semigroups-actions/ http://github.com/ppetr/semigroups-actions/issues head: git clone git://github.com/ppetr/semigroups-actions.git Thu Dec 20 21:48:01 UTC 2012 by PetrPudlak NixOS:0.1 515 total (7 in the last 30 days) (no votes yet) [estimated by rule of succession] λ λ λ Docs uploaded by userBuild status unknown Hackage Matrix CI

[Index]

## Flags

NameDescriptionDefaultType
base2DisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

#### Maintainer's Corner

For package maintainers and hackage trustees

[back to package description]

# semigroups-actions

In mathematics, an action of a semigroup on a set is an operation that associates each element of the semigroup is with a transformation on the set. See Wikipedia articles on semigroup action and group action.

This package complements and depends on semigroups.

It requires MultiParamTypeClasses extension.

## Examples

Similarly to semigroups, semigroup (or monoid) actions arise almost everywhere (if you look for them).

### Natural numbers acting on monoids

The multiplication monoid of natural numbers acts on any other monoid:

n act x = x <> ... <> x -- x appears n-times


So 0 act x == mempty, 3 act x == x <> x <> x etc. TODO efficiency

This is expressed by newtype Repeat and instance

instance (Monoid w, Whole n) => SemigroupAct (Product n) (Repeat w) where


Many different concepts can be expressed using such an action, including

• repeating a list n-times (replicate),

• compose a function f n-times, commonly denoted as fⁿ in mathematics:

(Repeat (Endo fⁿ)) = (Product n) act (Repeat (Endo f))


## Self-application

Any semigroup (or monoid) can be viewed as acting on itself. In this case, act simply becomes <>. This is expressed by the SelfAct type:

newtype SelfAct a = SelfAct a
instance Semigroup g => Semigroup (SelfAct g) where
(SelfAct x) <> (SelfAct y) = SelfAct \$ x <> y


## Matrices acting on vectors

Matrices with multiplication can be viewed as a group acting on vectors.