[{"name":"Typeclasses.Classes.Comparison","comment":"\nComparison typeclass definition and its instances for basic types.\n\n# Definition\n@docs Comparison\n\n# Construction utilities\n@docs compare, equalityAndLt, comparable\n\n# Instance transformation utilities\n@docs map\n\n# Instances\n@docs int, float\n\n","unions":[],"aliases":[{"name":"Comparison","comment":" Explicit typeclass which implements comparison operations for type `a`. ","args":["a"],"type":"{ equality : Typeclasses.Classes.Equality.Equality a, compare : a -> a -> Basics.Order, lt : a -> a -> Basics.Bool, le : a -> a -> Basics.Bool, gt : a -> a -> Basics.Bool, ge : a -> a -> Basics.Bool, min : a -> a -> a, max : a -> a -> a }"}],"values":[{"name":"comparable","comment":" Construct an instance for a comparable type using the compiler-generated definitions. ","type":"Typeclasses.Classes.Comparison.Comparison comparable"},{"name":"compare","comment":" Construct an instance from just a `compare` function. ","type":"(a -> a -> Basics.Order) -> Typeclasses.Classes.Comparison.Comparison a"},{"name":"equalityAndLt","comment":" Construct an instance from an instance of equality and\na lesser-than function. ","type":"Typeclasses.Classes.Equality.Equality a -> (a -> a -> Basics.Bool) -> Typeclasses.Classes.Comparison.Comparison a"},{"name":"float","comment":" Instance for `Float`. ","type":"Typeclasses.Classes.Comparison.Comparison Basics.Float"},{"name":"int","comment":" Instance for `Int`. ","type":"Typeclasses.Classes.Comparison.Comparison Basics.Int"},{"name":"map","comment":" Map over the owner type of an instance to produce a new instance.\n\nYou need to provide both a covariant and a contravariant mapping\n(i.e., `(a -> b)` and `(b -> a)`).\n","type":"(a -> b) -> (b -> a) -> Typeclasses.Classes.Comparison.Comparison a -> Typeclasses.Classes.Comparison.Comparison b"}],"binops":[]},{"name":"Typeclasses.Classes.Equality","comment":"\nEquality typeclass definition and its instances for basic types.\n\n# Definition\n@docs Equality\n\n# Construction utilities\n@docs eqAndNotEq, eq, compare, comparable\n\n# Instance transformation utilities\n@docs map\n\n# Instances\n@docs int, float, tuple2, tuple3, either\n\n","unions":[],"aliases":[{"name":"Equality","comment":" Explicit typeclass which implements equality for type `a`. ","args":["a"],"type":"{ eq : a -> a -> Basics.Bool, notEq : a -> a -> Basics.Bool }"}],"values":[{"name":"comparable","comment":" Instance for any type, which satisfies the magic comparable constraint. ","type":"Typeclasses.Classes.Equality.Equality comparable"},{"name":"compare","comment":" Construct from a comparison operation. ","type":"(a -> a -> Basics.Order) -> Typeclasses.Classes.Equality.Equality a"},{"name":"either","comment":" Instance for Either, with instances for its members provided. ","type":"Typeclasses.Classes.Equality.Equality a -> Typeclasses.Classes.Equality.Equality b -> Typeclasses.Classes.Equality.Equality (Either.Either a b)"},{"name":"eq","comment":" Construct just from the eq operation. ","type":"(a -> a -> Basics.Bool) -> Typeclasses.Classes.Equality.Equality a"},{"name":"eqAndNotEq","comment":" Construct from the eq and not-eq operations. ","type":"(a -> a -> Basics.Bool) -> (a -> a -> Basics.Bool) -> Typeclasses.Classes.Equality.Equality a"},{"name":"float","comment":" Instance for Float. ","type":"Typeclasses.Classes.Equality.Equality Basics.Float"},{"name":"int","comment":" Instance for Int. ","type":"Typeclasses.Classes.Equality.Equality Basics.Int"},{"name":"map","comment":" Map over the owner type of an instance to produce a new instance.\n\nPlease notice that mapping is contravariant (i.e., `(b -> a)` instead of `(a -> b)`).\n","type":"(b -> a) -> Typeclasses.Classes.Equality.Equality a -> Typeclasses.Classes.Equality.Equality b"},{"name":"tuple2","comment":" Instance for tuple, with instances for its members provided. ","type":"Typeclasses.Classes.Equality.Equality a -> Typeclasses.Classes.Equality.Equality b -> Typeclasses.Classes.Equality.Equality ( a, b )"},{"name":"tuple3","comment":" Instance for tuple, with instances for its members provided. ","type":"Typeclasses.Classes.Equality.Equality a -> Typeclasses.Classes.Equality.Equality b -> Typeclasses.Classes.Equality.Equality c -> Typeclasses.Classes.Equality.Equality ( a, b, c )"}],"binops":[]},{"name":"Typeclasses.Classes.Hashing","comment":"\nHashing typeclass definition and its instances for basic types.\nMuch inspired by [the \"hashable\" Haskell library](http://hackage.haskell.org/package/hashable).\n\n# Definition\n@docs Hashing\n\n# Construction utilities\n@docs hash, hashWithSalt\n\n# Instance transformation utilities\n@docs map\n\n# Instances\n@docs int, list, array, string\n\n","unions":[],"aliases":[{"name":"Hashing","comment":" Explicit typeclass which implements hashing for type `a`. ","args":["a"],"type":"{ hash : a -> Basics.Int, hashWithSalt : Basics.Int -> a -> Basics.Int }"}],"values":[{"name":"array","comment":" Hashing instance for arrays,\ndetermined by the Hashing instance for elements and sampling.\nSampling determines the maximum amount of elements to be picked\nfrom the array while constructing the hash,\nallowing you to control the balance between the quality of hashing and its performance.\n","type":"Typeclasses.Classes.Hashing.Hashing a -> Basics.Int -> Typeclasses.Classes.Hashing.Hashing (Array.Array a)"},{"name":"hash","comment":" Construct from just the hashing function. ","type":"(a -> Basics.Int) -> Typeclasses.Classes.Hashing.Hashing a"},{"name":"hashWithSalt","comment":" Construct from just the hashing function, which combines the hash with salt. ","type":"(Basics.Int -> a -> Basics.Int) -> Typeclasses.Classes.Hashing.Hashing a"},{"name":"int","comment":" Instance for `Int`. ","type":"Typeclasses.Classes.Hashing.Hashing Basics.Int"},{"name":"list","comment":" Instance for `List`, which utilizes an instance for its element.\nTraverses the list in whole. ","type":"Typeclasses.Classes.Hashing.Hashing a -> Typeclasses.Classes.Hashing.Hashing (List.List a)"},{"name":"map","comment":" Map over the owner type of an instance to produce a new instance.\n\nPlease notice that mapping is contravariant (i.e., `(b -> a)` instead of `(a -> b)`).\n","type":"(b -> a) -> Typeclasses.Classes.Hashing.Hashing a -> Typeclasses.Classes.Hashing.Hashing b"},{"name":"string","comment":" Hashing instance for strings, determined by sampling.\nSampling determines the maximum amount of characters to be picked\nfrom the string while constructing the hash,\nallowing you to control the balance between the quality of hashing and its performance.\n","type":"Basics.Int -> Typeclasses.Classes.Hashing.Hashing String.String"}],"binops":[]},{"name":"Typeclasses.Classes.Monoid","comment":"\nMonoid typeclass definition and its instances for basic types.\n\n# Definition\n@docs Monoid\n\n# Construction utilities\n@docs identityAndConcat, semigroupAndIdentity, appendable, numberProduct, numberSum\n\n# Instance transformation utilities\n@docs map\n\n# Instances\n@docs intProduct, intSum, string, maybeFirst, list, setUnion, setDifference, cmd, sub, task\n\n","unions":[],"aliases":[{"name":"Monoid","comment":" Explicit typeclass which implements monoid operations for type `a`. ","args":["a"],"type":"{ semigroup : Typeclasses.Classes.Semigroup.Semigroup a, identity : a, concat : List.List a -> a }"}],"values":[{"name":"appendable","comment":" Construct an instance for any type which satisfies Elm's `appendable` magic constraint,\nby providing an identity value. ","type":"appendable -> Typeclasses.Classes.Monoid.Monoid appendable"},{"name":"cmd","comment":" Instance for commands under the batch operation. ","type":"Typeclasses.Classes.Monoid.Monoid (Platform.Cmd.Cmd msg)"},{"name":"identityAndConcat","comment":" Construct an instance by specifying identity value and a concatenation operation. ","type":"a -> (List.List a -> a) -> Typeclasses.Classes.Monoid.Monoid a"},{"name":"intProduct","comment":" Instance for integers under the multiplication operation. ","type":"Typeclasses.Classes.Monoid.Monoid Basics.Int"},{"name":"intSum","comment":" Instance for integers under the sum operation. ","type":"Typeclasses.Classes.Monoid.Monoid Basics.Int"},{"name":"list","comment":" Instance for list under concatenation. ","type":"Typeclasses.Classes.Monoid.Monoid (List.List a)"},{"name":"map","comment":" Map over the owner type of an instance to produce a new instance.\n\nYou need to provide both a covariant and a contravariant mapping\n(i.e., `(a -> b)` and `(b -> a)`).\n","type":"(a -> b) -> (b -> a) -> Typeclasses.Classes.Monoid.Monoid a -> Typeclasses.Classes.Monoid.Monoid b"},{"name":"maybeFirst","comment":" Instance for maybe, which chooses the first `Just` value. ","type":"Typeclasses.Classes.Monoid.Monoid (Maybe.Maybe a)"},{"name":"numberProduct","comment":" Construct an instance for any type which satisfies Elm's `number` magic constraint.\nImplements multiplication. ","type":"Typeclasses.Classes.Monoid.Monoid number"},{"name":"numberSum","comment":" Construct an instance for any type which satisfies Elm's `number` magic constraint.\nImplements sum. ","type":"Typeclasses.Classes.Monoid.Monoid number"},{"name":"semigroupAndIdentity","comment":" Construct an instance by specifying a semigroup instance and an identity value. ","type":"Typeclasses.Classes.Semigroup.Semigroup a -> a -> Typeclasses.Classes.Monoid.Monoid a"},{"name":"setDifference","comment":" Instance for set under the difference operation. ","type":"Typeclasses.Classes.Monoid.Monoid (Set.Set comparable)"},{"name":"setUnion","comment":" Instance for set under the union operation. ","type":"Typeclasses.Classes.Monoid.Monoid (Set.Set comparable)"},{"name":"string","comment":" Instance for strings under the appending operation. ","type":"Typeclasses.Classes.Monoid.Monoid String.String"},{"name":"sub","comment":" Instance for subscriptions under the batch operation. ","type":"Typeclasses.Classes.Monoid.Monoid (Platform.Sub.Sub msg)"},{"name":"task","comment":" Instance for tasks, which sequentially executes them and groups the results. ","type":"Typeclasses.Classes.Monoid.Monoid a -> Typeclasses.Classes.Monoid.Monoid (Task.Task x a)"}],"binops":[]},{"name":"Typeclasses.Classes.Semigroup","comment":"\nSemigroup typeclass definition and its instances for basic types.\n\n# Definition\n@docs Semigroup\n\n# Construction utilities\n@docs prepend, concat, appendable, numberProduct, numberSum\n\n# Instance transformation utilities\n@docs map\n\n# Instances\n@docs intProduct, intSum, string, maybeFirst, list, setUnion, setIntersection, setDifference, cmd, sub, task\n\n","unions":[],"aliases":[{"name":"Semigroup","comment":" Explicit typeclass which implements semigroup operations for type `a`.\n\nNotice that the binary operation function is named \"prepend\" instead of \"append\",\nbecause it follows the convention of having the context value come as the last value.\n","args":["a"],"type":"{ prepend : a -> a -> a }"}],"values":[{"name":"appendable","comment":" Construct an instance for any type which satisfies Elm's `appendable` magic constraint. ","type":"Typeclasses.Classes.Semigroup.Semigroup appendable"},{"name":"cmd","comment":" Instance for commands under the batch operation. ","type":"Typeclasses.Classes.Semigroup.Semigroup (Platform.Cmd.Cmd msg)"},{"name":"concat","comment":" Construct from a concatenation function. ","type":"(List.List a -> a) -> Typeclasses.Classes.Semigroup.Semigroup a"},{"name":"intProduct","comment":" Instance for integers under the multiplication operation. ","type":"Typeclasses.Classes.Semigroup.Semigroup Basics.Int"},{"name":"intSum","comment":" Instance for integers under the sum operation. ","type":"Typeclasses.Classes.Semigroup.Semigroup Basics.Int"},{"name":"list","comment":" Instance for list under concatenation. ","type":"Typeclasses.Classes.Semigroup.Semigroup (List.List a)"},{"name":"map","comment":" Map over the owner type of an instance to produce a new instance.\n\nYou need to provide both a covariant and a contravariant mapping\n(i.e., `(a -> b)` and `(b -> a)`).\n","type":"(a -> b) -> (b -> a) -> Typeclasses.Classes.Semigroup.Semigroup a -> Typeclasses.Classes.Semigroup.Semigroup b"},{"name":"maybeFirst","comment":" Instance for maybe, which chooses the first `Just` value. ","type":"Typeclasses.Classes.Semigroup.Semigroup (Maybe.Maybe a)"},{"name":"numberProduct","comment":" Construct an instance for any type which satisfies Elm's `number` magic constraint.\nImplements multiplication. ","type":"Typeclasses.Classes.Semigroup.Semigroup number"},{"name":"numberSum","comment":" Construct an instance for any type which satisfies Elm's `number` magic constraint.\nImplements sum. ","type":"Typeclasses.Classes.Semigroup.Semigroup number"},{"name":"prepend","comment":" Construct from a prepend function. ","type":"(a -> a -> a) -> Typeclasses.Classes.Semigroup.Semigroup a"},{"name":"setDifference","comment":" Instance for set under the difference operation. ","type":"Typeclasses.Classes.Semigroup.Semigroup (Set.Set comparable)"},{"name":"setIntersection","comment":" Instance for set under the intersection operation. ","type":"Typeclasses.Classes.Semigroup.Semigroup (Set.Set comparable)"},{"name":"setUnion","comment":" Instance for set under the union operation. ","type":"Typeclasses.Classes.Semigroup.Semigroup (Set.Set comparable)"},{"name":"string","comment":" Instance for strings under the appending operation. ","type":"Typeclasses.Classes.Semigroup.Semigroup String.String"},{"name":"sub","comment":" Instance for subscriptions under the batch operation. ","type":"Typeclasses.Classes.Semigroup.Semigroup (Platform.Sub.Sub msg)"},{"name":"task","comment":" Instance for tasks, which sequentially executes them and groups the results. ","type":"Typeclasses.Classes.Semigroup.Semigroup a -> Typeclasses.Classes.Semigroup.Semigroup (Task.Task x a)"}],"binops":[]},{"name":"Typeclasses.Extensions.List","comment":" Extensions to the list API, which utilise typeclasses.\n\n@docs fold, foldMap, sort, sortBy, member, dedupe\n\n","unions":[],"aliases":[],"values":[{"name":"dedupe","comment":" *O(n^2)*. Deduplicate a list using an instance of `Equality`. ","type":"Typeclasses.Classes.Equality.Equality a -> List.List a -> List.List a"},{"name":"fold","comment":" *O(n)*. Combine the elements of list using a `Monoid` instance. ","type":"Typeclasses.Classes.Monoid.Monoid a -> List.List a -> a"},{"name":"foldMap","comment":" *O(n)*. Map each element of the list to a type which has an instance of `Monoid`,\nand combine the results. ","type":"Typeclasses.Classes.Monoid.Monoid b -> (a -> b) -> List.List a -> b"},{"name":"member","comment":" *O(n)*. Check whether a value is a member of a list based on the value's `Equality` instance. ","type":"Typeclasses.Classes.Equality.Equality a -> a -> List.List a -> Basics.Bool"},{"name":"sort","comment":" Sort the elements using a `Comparison` instance. ","type":"Typeclasses.Classes.Comparison.Comparison a -> List.List a -> List.List a"},{"name":"sortBy","comment":" Sort the elements by mapping to a type which has an instance of `Comparison`. ","type":"Typeclasses.Classes.Comparison.Comparison b -> (a -> b) -> List.List a -> List.List a"}],"binops":[]}]