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

Equality typeclass definition and its instances for basic types.

Definition

type alias Equality a =
{ eq : a -> a -> Bool
, notEq : a -> a -> Bool
}

Explicit typeclass which implements equality for type a.

Construction utilities

eqAndNotEq : (a -> a -> Bool) -> (a -> a -> Bool) -> Equality a

Construct from the eq and not-eq operations.

eq : (a -> a -> Bool) -> Equality a

Construct just from the eq operation.

compare : (a -> a -> Order) -> Equality a

Construct from a comparison operation.

comparable : Equality comparable

Instance for any type, which satisfies the magic comparable constraint.

Instance transformation utilities

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

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

Please notice that mapping is contravariant (i.e., (b -> a) instead of (a -> b)).

Instances

Primitives

bool : Equality Bool

Instance for Bool.

int : Equality Int

Instance for Int.

float : Equality Float

Instance for Float.

char : Equality Char

Instance for Char.

string : Equality String

Instance for String.

Composites

maybe : Equality a -> Equality (Maybe a)

Equality for Maybe, with instance for its member provided.

result : Equality a -> Equality b -> Equality (Result a b)

Instance for Result, with instances for its members provided.

either : Equality a -> Equality b -> Equality (Either a b)

Instance for Either, with instances for its members provided.

list : Equality a -> Equality (List a)

Equality for List, with instance for its member provided.

array : Equality a -> Equality (Array a)

Equality for Array, with instance for its member provided.

Tuples

tuple2 : Equality a -> Equality b -> Equality ( a, b )

Instance for tuple, with instances for its members provided.

tuple3 : Equality a -> Equality b -> Equality c -> Equality ( a, b, c )

Instance for tuple, with instances for its members provided.