Copyright | (c) Alice Rixte 2025 |
---|---|
License | BSD 3 |
Maintainer | alice.rixte@u-bordeaux.fr |
Stability | unstable |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
Data.Semidirect.Strict
Description
Semidirect products for left and right actions.
For a lazy version, see
.Lazy
- Usage :
>>>
import Data.Semigroup
>>>
LSemidirect (Sum 1) (Product 2) <> LSemidirect (Sum (3 :: Int)) (Product (4 :: Int))
LSemidirect {lactee = Sum {getSum = 7}, lactor = Product {getProduct = 8}}
- Property checking :
There is a
instance for Semigroup
(resp. LSemidirect
)
only if there is a RSemidirect
(resp. LActSgMorph
) instance. For
example, RActSgMorph
acting on itself is not a semigroup action by morphism
and therefore the semidirect product is not associative :Sum
Int
>>>
LSemidirect (Sum 1) (Sum 2) <> LSemidirect (Sum (3 :: Int)) (Sum (4 :: Int))
No instance for `LActDistrib (Sum Int) (Sum Int)' arising from a use of `<>'
Synopsis
- data LSemidirect x s = LSemidirect {}
- lerase :: Monoid x => LSemidirect x s -> LSemidirect x s
- lforget :: Monoid s => LSemidirect x s -> LSemidirect x s
- lembedActee :: Monoid s => x -> LSemidirect x s
- lembedActor :: Monoid x => s -> LSemidirect x s
- lfromPair :: (x, s) -> LSemidirect x s
- data RSemidirect x s = RSemidirect {}
- rerase :: Monoid x => RSemidirect x s -> RSemidirect x s
- rforget :: Monoid s => RSemidirect x s -> RSemidirect x s
- rembedActee :: Monoid s => x -> RSemidirect x s
- rembedActor :: Monoid x => s -> RSemidirect x s
- rfromPair :: (x, s) -> RSemidirect x s
Documentation
data LSemidirect x s Source #
A semi-direct product for a left action, where s
acts on x
Constructors
LSemidirect | |
Instances
lerase :: Monoid x => LSemidirect x s -> LSemidirect x s Source #
Erase the actee (i.e. replace it with mempty
).
lforget :: Monoid s => LSemidirect x s -> LSemidirect x s Source #
Forget the actor (i.e. replace it with mempty
).
lembedActee :: Monoid s => x -> LSemidirect x s Source #
Make a semidirect pair whose actor is mempty
.
lembedActor :: Monoid x => s -> LSemidirect x s Source #
Make a semidirect pair whose actee is mempty
.
lfromPair :: (x, s) -> LSemidirect x s Source #
Convert a pair into a semidirect product element.
data RSemidirect x s Source #
A semidirect product for a right action, where s
acts on x
Constructors
RSemidirect | |
Instances
rerase :: Monoid x => RSemidirect x s -> RSemidirect x s Source #
Erase the actee (i.e. replace it with mempty
).
rforget :: Monoid s => RSemidirect x s -> RSemidirect x s Source #
Forget the actor (i.e. replace it with mempty
).
rembedActee :: Monoid s => x -> RSemidirect x s Source #
Make a semidirect pair whose actor element is mempty
.
rembedActor :: Monoid x => s -> RSemidirect x s Source #
Make a semidirect pair whose actee is mempty
.
rfromPair :: (x, s) -> RSemidirect x s Source #
Convert a pair into a semidirect product element