algebra

package
v0.0.0-...-020adb6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2023 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Additive

type Additive interface {
	constraints.Integer | constraints.Float | constraints.Complex | ~string
}

Additive is a type that can use `+` operator.

type DefaultMonoid

type DefaultMonoid[T any] struct {
	Semigroup[T]
	EmptyImpl func() T
}

DefaultMonoid is a default implementation of Monoid.

func (*DefaultMonoid[T]) Empty

func (m *DefaultMonoid[T]) Empty() T

type DefaultSemigroup

type DefaultSemigroup[T any] struct {
	CombineImpl func(T, T) T
}

DefaultSemigroup is a default implementation of Semigroup.

func (*DefaultSemigroup[T]) Combine

func (s *DefaultSemigroup[T]) Combine(x, y T) T

type Monoid

type Monoid[T any] interface {
	Semigroup[T]
	Empty() T
}

Monoid is a Semigroup with identity.

func DeriveAdditiveMonoid

func DeriveAdditiveMonoid[T Additive]() Monoid[T]

DeriveAdditiveMonoid derives Monoid using `+` and zero value.

func DeriveMultiplicativeMonoid

func DeriveMultiplicativeMonoid[T Multiplicative]() Monoid[T]

DeriveMultiplicativeMonoid derives Monoid using `*` and `1`.

type Multiplicative

type Multiplicative interface {
	constraints.Integer | constraints.Float | constraints.Complex
}

Multiplicative is a type that can use `*` operator.

type Semigroup

type Semigroup[T any] interface {
	Combine(T, T) T
}

Semigroup is a set of type `T` and its associative binary operation `Combine(T, T) T`

func DeriveAdditiveSemigroup

func DeriveAdditiveSemigroup[T Additive]() Semigroup[T]

DeriveAdditiveSemigroup derives Semigroup using `+` operator.

func DeriveMultiplicativeSemigroup

func DeriveMultiplicativeSemigroup[T Multiplicative]() Semigroup[T]

DeriveMultiplicativeSemigroup derives Semigroup using `*` operator.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL