numhask
Safe HaskellNone
LanguageGHC2024

NumHask.Algebra.Action

Description

Algebra for Actions

Convention: the |'s in the operators point towards the higher-kinded number, representing an operator or action into a structure.

Synopsis

Documentation

class Additive (AdditiveScalar m) => AdditiveAction m where Source #

Additive Action

m |+ zero == m

Associated Types

type AdditiveScalar m Source #

Methods

(|+) :: m -> AdditiveScalar m -> m infixl 6 Source #

Instances

Instances details
Additive a => AdditiveAction (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Associated Types

type AdditiveScalar (TrivialAction a) 
Instance details

Defined in NumHask.Algebra.Action

AdditiveAction a => AdditiveAction (Positive a) Source # 
Instance details

Defined in NumHask.Data.Positive

Associated Types

type AdditiveScalar (Positive a) 
Instance details

Defined in NumHask.Data.Positive

AdditiveAction a => AdditiveAction (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

Associated Types

type AdditiveScalar (Wrapped a) 
Instance details

Defined in NumHask.Data.Wrapped

(+|) :: AdditiveAction m => AdditiveScalar m -> m -> m infixl 6 Source #

flipped additive action

(+|) == flip (|+)
zero +| m = m

class (AdditiveAction m, Subtractive (AdditiveScalar m)) => SubtractiveAction m where Source #

Subtractive Action

m |- zero = m

Methods

(|-) :: m -> AdditiveScalar m -> m infixl 6 Source #

Instances

Instances details
Subtractive a => SubtractiveAction (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

SubtractiveAction a => SubtractiveAction (Positive a) Source # 
Instance details

Defined in NumHask.Data.Positive

SubtractiveAction a => SubtractiveAction (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

(-|) :: (AdditiveAction m, Subtractive m) => AdditiveScalar m -> m -> m infixl 6 Source #

Subtraction with the scalar on the left

(-|) == (+|) . negate
zero -| m = negate m

class Multiplicative (Scalar m) => MultiplicativeAction m where Source #

Multiplicative Action

m |* one = m
m |* zero = zero

Associated Types

type Scalar m Source #

Methods

(|*) :: m -> Scalar m -> m infixl 7 Source #

Instances

Instances details
MultiplicativeAction Double Source #

Scalar self-action for Double.

This used to live as an orphan in circuits-stats (ODE) because it was missing from the numhask class hierarchy. Moving it here removes the orphan and makes the action available to any downstream package.

Instance details

Defined in NumHask.Algebra.Action

Associated Types

type Scalar Double 
Instance details

Defined in NumHask.Algebra.Action

MultiplicativeAction Float Source #

Scalar self-action for Float.

Instance details

Defined in NumHask.Algebra.Action

Associated Types

type Scalar Float 
Instance details

Defined in NumHask.Algebra.Action

Methods

(|*) :: Float -> Scalar Float -> Float Source #

Multiplicative a => MultiplicativeAction (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Associated Types

type Scalar (TrivialAction a) 
Instance details

Defined in NumHask.Algebra.Action

type Scalar (TrivialAction a) = a
Multiplicative a => MultiplicativeAction (EuclideanPair a) Source # 
Instance details

Defined in NumHask.Algebra.Metric

Associated Types

type Scalar (EuclideanPair a) 
Instance details

Defined in NumHask.Algebra.Metric

type Scalar (EuclideanPair a) = a
MultiplicativeAction a => MultiplicativeAction (Positive a) Source # 
Instance details

Defined in NumHask.Data.Positive

Associated Types

type Scalar (Positive a) 
Instance details

Defined in NumHask.Data.Positive

type Scalar (Positive a) = Scalar (Wrapped a)

Methods

(|*) :: Positive a -> Scalar (Positive a) -> Positive a Source #

MultiplicativeAction a => MultiplicativeAction (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

Associated Types

type Scalar (Wrapped a) 
Instance details

Defined in NumHask.Data.Wrapped

type Scalar (Wrapped a) = Scalar a

Methods

(|*) :: Wrapped a -> Scalar (Wrapped a) -> Wrapped a Source #

(*|) :: MultiplicativeAction m => Scalar m -> m -> m infixl 7 Source #

flipped multiplicative action

(*|) == flip (|*)
one *| m = one
zero *| m = zero

class (Divisive (Scalar m), MultiplicativeAction m) => DivisiveAction m where Source #

Divisive Action

m |/ one = m

Methods

(|/) :: m -> Scalar m -> m infixl 7 Source #

Instances

Instances details
DivisiveAction Double Source # 
Instance details

Defined in NumHask.Algebra.Action

DivisiveAction Float Source # 
Instance details

Defined in NumHask.Algebra.Action

Methods

(|/) :: Float -> Scalar Float -> Float Source #

Divisive a => DivisiveAction (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Divisive a => DivisiveAction (EuclideanPair a) Source # 
Instance details

Defined in NumHask.Algebra.Metric

DivisiveAction a => DivisiveAction (Positive a) Source # 
Instance details

Defined in NumHask.Data.Positive

Methods

(|/) :: Positive a -> Scalar (Positive a) -> Positive a Source #

DivisiveAction a => DivisiveAction (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

Methods

(|/) :: Wrapped a -> Scalar (Wrapped a) -> Wrapped a Source #

(/|) :: (MultiplicativeAction m, Divisive m) => Scalar m -> m -> m Source #

left scalar division

(/|) == (*|) . recip
one |/ m = recip m

type Module m = (Distributive (Scalar m), MultiplicativeAction m) Source #

A Module

a *| one == a
(a + b) *| c == (a *| c) + (b *| c)
c |* (a + b) == (c |* a) + (c |* b)
a *| zero == zero
a *| b == b |* a

newtype TrivialAction a Source #

An action of a set of numbers on itself

Constructors

TrivialAction 

Fields

Instances

Instances details
Eq a => Eq (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Ord a => Ord (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Additive a => AdditiveAction (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Associated Types

type AdditiveScalar (TrivialAction a) 
Instance details

Defined in NumHask.Algebra.Action

Divisive a => DivisiveAction (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Multiplicative a => MultiplicativeAction (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Associated Types

type Scalar (TrivialAction a) 
Instance details

Defined in NumHask.Algebra.Action

type Scalar (TrivialAction a) = a
Subtractive a => SubtractiveAction (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Additive a => Additive (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Subtractive a => Subtractive (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Divisive a => Divisive (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

Multiplicative a => Multiplicative (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

type AdditiveScalar (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

type Scalar (TrivialAction a) Source # 
Instance details

Defined in NumHask.Algebra.Action

type Scalar (TrivialAction a) = a