Hoogle Search
Within LTS Haskell 24.36 (ghc-9.10.3)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
-
Library for functions pertaining to tree exploration and manipulation Library for functions pertaining to tree exploration and manipulation
-
Constraints that any type, resp. no type fulfills Since GHC 7.4, constraints are first-class: we have the constraint kind, and thus type-classes have a kind of form k -> Constraint, or k -> l -> m -> ... -> Constraint for a multi-param type class. Such type-level functions can be used as arguments to data types, or as instances for other type classes. For any given arity, the constraint-valued functions form a semigroup with respect to “constraint intersection”, which Haskell supports with tuple syntax, e.g.
type NewCstrt¹ a = (Cstrt¹₀ a, Cstrt¹₁ a)
means that NewCstrt¹ :: * -> Constraint requires that for any given parameter both Cstrt¹₀ and Cstrt¹₁ be fulfilled. It is intuitive enough that this type-level semigroup can be extended to a monoid, but out of the box this is only possible for arity 0, i.e. for Cstrt⁰ :: Constraint(Cstrt⁰, ()) ~ ((), Cstrt⁰) ~ Cstrt⁰
For higher arity, this would require type-level lambdas, like for Cstrt² :: * -> * -> Constraint(Cstrt², \a b -> ()) ~ (\a b -> (), Cstrt²) ~ Cstrt²
which is not valid Haskell syntax. It is easy enough to define the lambdas in an ad-hoc manner astype Unconstrained² a b = ()
and then(Cstrt², Unconstrained²) ~ (Unconstrained², Cstrt²) ~ Cstrt²
This library provides those trivial constraints in a single, documented place, and it uses classes instead of type-synonyms (which would be problematic when it comes to partial application). Arities 0-9 are provided. They can be useful in any construction that is parameterised over a constrainer-class, when you do not wish to actually constrain the domain with it. The other thing this library provides are the opposite classes, i.e. \a b ... -> Impossible, constraints which can never be fulfilled. They are essentially dual to the Unconstrained ones, and can likewise be useful as parameters that should completely “disable” a conditional feature. -
Small monomorphic tuples This library provides small tuples where all the elements are the same type. The elements always unpack into the data constructor. This can be helpful when the tuple type is itself nested inside of another data constructor.
-
Twitter JSON parser and types Please see the README on Github at https://github.com/himura/twitter-types#readme
-
Data.Type.Equality compat package This library defines a propositional equality data type, shims Data.Type.Equality as well as possible for older GHCs (< 7.8).
data a :~: b where Refl :: a :~: a
The module Data.Type.Equality.Hetero shims :~~: equality, for compilers with PolyKinds -
Collection of widely reimplemented type families Collection of widely reimplemented type families
-
Guide type inference with proxy values This package provides Proxy values for various types from the base library and functions to use these values as hints for type inference.
package
type-level-bytestrings Tools for manipulating type-level bytes and bytestrings Please see README.md.
-
Utilities for writing Show-like type families Please see README.md.
-
Type-level natural and proofs of their properties. Type-level natural numbers and proofs of their properties.