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.Monoid

Monoid typeclass definition and its instances for basic types.

Definition

type alias Monoid a =
{ semigroup : Semigroup a
, identity : a
, concat : List a -> a
}

Explicit typeclass which implements monoid operations for type a.

Construction utilities

identityAndConcat : a -> (List a -> a) -> Monoid a

Construct an instance by specifying identity value and a concatenation operation.

semigroupAndIdentity : Semigroup a -> a -> Monoid a

Construct an instance by specifying a semigroup instance and an identity value.

appendable : appendable -> Monoid appendable

Construct an instance for any type which satisfies Elm's appendable magic constraint, by providing an identity value.

numberProduct : Monoid number

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

numberSum : Monoid number

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

Instance transformation utilities

map : (a -> b) -> (b -> a) -> Monoid a -> Monoid 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 : Monoid Int

Instance for integers under the multiplication operation.

intSum : Monoid Int

Instance for integers under the sum operation.

string : Monoid String

Instance for strings under the appending operation.

maybeFirst : Monoid (Maybe a)

Instance for maybe, which chooses the first Just value.

list : Monoid (List a)

Instance for list under concatenation.

setUnion : Monoid (Set comparable)

Instance for set under the union operation.

setDifference : Monoid (Set comparable)

Instance for set under the difference operation.

cmd : Monoid (Cmd msg)

Instance for commands under the batch operation.

sub : Monoid (Sub msg)

Instance for subscriptions under the batch operation.

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

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