nikita-volkov/typeclasses/1.6.0

NOTE: the latest version is 1.8.0

Rerouted (retagged, needs approval). The tag now points at a different commit than when this version was published. The Lamdera package server serves a copy recovered from https://github.com/nikita-volkov/typeclasses.

What we checked: Tag 1.6.0 is still on github.com/nikita-volkov/typeclasses; its commit 9a34425b67b5 is from 2019-07-25 15:07 UTC, after the version was published (2019-07-25 15:07 UTC); elm.json is byte-identical to package.elm-lang.org's; the exposed modules match docs.json; the zip's SHA-1 is not the published one and nothing else confirms its contents.

We could not verify this copy against what was published, so the Lamdera compiler asks before using it (y/n). Without a terminal, as in CI, it stops with an error unless approved:

  • lamdera make --auto-approve-package-rerouting approves rerouted versions for that run,
  • LAMDERA_AUTO_APPROVE_PACKAGE_REROUTING=1 does the same for every run in that environment,
  • LAMDERA_CACHE=off skips the Lamdera package server altogether: packages come from package.elm-lang.org and GitHub only, as with elm, and a rerouted version then fails to download.

Details · package.elm-lang.org's zip: https://github.com/nikita-volkov/typeclasses/zipball/1.6.0/

Typeclasses.Classes.Semigroup

Semigroup typeclass definition and its instances for basic types.

Definition

type alias Semigroup a =
{ prepend : a -> a -> a }

Explicit typeclass which implements semigroup operations for type a.

Notice that the binary operation function is named "prepend" instead of "append", because it follows the convention of having the context value come as the last value.

Construction utilities

prepend : (a -> a -> a) -> Semigroup a

Construct from a prepend function.

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.

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.

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

intProduct : Semigroup Int

Instance for integers under the multiplication operation.

intSum : Semigroup Int

Instance for integers under the sum operation.

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.

setUnion : Semigroup (Set comparable)

Instance for set under the union operation.

setIntersection : Semigroup (Set comparable)

Instance for set under the intersection operation.

setDifference : Semigroup (Set comparable)

Instance for set under the difference operation.

cmd : Semigroup (Cmd msg)

Instance for commands under the batch operation.

sub : Semigroup (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.