jonathanfishbein1 / numeric-typeclasses / Semigroup

Semigroup typeclass definition and its instances for basic types.

Definition


type alias Semigroup a =
a -> a -> a

Explicit typeclass which implements semigroup operations for type a.

Construction utilities

concat : (List a -> a) -> Semigroup a

Construct from a concatenation function.

appendable : Semigroup appendable

Construct an instance for any type which satisfies Elm's appendable magic constraint.

Instance transformation utilities

map : (a -> b) -> (b -> a) -> Semigroup a -> Semigroup b

Map over the owner type of an instance to produce a new instance.

You need to provide both a covariant and a contravariant mapping (i.e., (a -> b) and (b -> a)).

Instances

string : Semigroup String

Instance for strings under the appending operation.

maybeFirst : Semigroup (Maybe a)

Instance for maybe, which chooses the first Just value.

list : Semigroup (List a)

Instance for list under concatenation.

cmd : Semigroup (Platform.Cmd.Cmd msg)

Instance for commands under the batch operation.

sub : Semigroup (Platform.Sub.Sub msg)

Instance for subscriptions under the batch operation.

task : Semigroup a -> Semigroup (Task x a)

Instance for tasks, which sequentially executes them and groups the results.

composition : Semigroup (a -> a)

Instance for a -> a function

setDifference : Semigroup (Set comparable)

Instance for set under the difference operation.

and : Semigroup Basics.Bool

Instance for and

intProduct : Semigroup Basics.Int

Instance for integers under the multiplication operation.

intSum : Semigroup Basics.Int

Instance for integers under the sum operation.

modularArithmetic : Basics.Int -> Semigroup Basics.Int

Instance for modularArithmetic semigroup

numberProduct : Semigroup number

Construct an instance for any type which satisfies Elm's number magic constraint. Implements multiplication.

numberSum : Semigroup number

Construct an instance for any type which satisfies Elm's number magic constraint. Implements sum.

or : Semigroup Basics.Bool

Instance for or

setIntersection : Semigroup (Set comparable)

Instance for set under the intersection operation.

setUnion : Semigroup (Set comparable)

Instance for set under the union operation.

unit : Semigroup ()

Instance for trivial semigroup

xor : Semigroup Basics.Bool

Instance for xor