diagrams-core-1.5.1.1: Core libraries for diagrams EDSL

Copyright | (c) 2011-2015 diagrams-core team (see LICENSE)
License | BSD-style (see LICENSE)
Maintainer | diagrams-discuss@googlegroups.com
Safe Haskell | Safe-Inferred
Language | Haskell2010

Diagrams.Core.V

Description

Type family for identifying associated vector spaces.

Synopsis

- type family V a :: Type -> Type
- type family N a
- type Vn a = V a (N a)
- type InSpace (v :: Type -> Type) n a = (V a ~ v, N a ~ n, Additive v, Num n)
- type SameSpace a b = (V a ~ V b, N a ~ N b)

# Documentation

type family V a :: Type -> Type Source #

Many sorts of objects have an associated vector space in which they "live". The type function `V` maps from object types to the associated vector space. The resulting vector space has kind `* -> *` which means it takes another value (a number) and returns a concrete vector. For example `V2` has kind `* -> *` and `V2 Double` is a vector.

#### Instances

Instances details

type V (Set a) Source # |
Instance details Defined in Diagrams.Core.V type V (Set a) = V a
type V (TransInv t) Source # |
Instance details Defined in Diagrams.Core.Transform type V (TransInv t) = V t
type V (Deletable m) Source # |
Instance details Defined in Diagrams.Core.V type V (Deletable m) = V m
type V (Split m) Source # |
Instance details Defined in Diagrams.Core.V type V (Split m) = V m
type V (Maybe a) Source # |
Instance details Defined in Diagrams.Core.V type V (Maybe a) = V a
type V [a] Source # |
Instance details Defined in Diagrams.Core.V type V [a] = V a
type V (Map k a) Source # |
Instance details Defined in Diagrams.Core.V type V (Map k a) = V a
type V (Envelope v n) Source # |
Instance details Defined in Diagrams.Core.Envelope type V (Envelope v n) = v
type V (Measured n a) Source # |
Instance details Defined in Diagrams.Core.Measure type V (Measured n a) = V a
type V (Attribute v n) Source # |
Instance details Defined in Diagrams.Core.Style type V (Attribute v n) = v
type V (Style v n) Source # |
Instance details Defined in Diagrams.Core.Style type V (Style v n) = v
type V (Trace v n) Source # |
Instance details Defined in Diagrams.Core.Trace type V (Trace v n) = v
type V (Transformation v n) Source # |
Instance details Defined in Diagrams.Core.Transform type V (Transformation v n) = v
type V (Point v n) Source # |
Instance details Defined in Diagrams.Core.Points type V (Point v n) = v
type V (m :+: n) Source # |
Instance details Defined in Diagrams.Core.V type V (m :+: n) = V m
type V (a, b) Source # |
Instance details Defined in Diagrams.Core.V type V (a, b) = V a
type V (a -> b) Source # |
Instance details Defined in Diagrams.Core.V type V (a -> b) = V b
type V (Query v n m) Source # |
Instance details Defined in Diagrams.Core.Query type V (Query v n m) = v
type V (Prim b v n) Source # |
Instance details Defined in Diagrams.Core.Types type V (Prim b v n) = v
type V (a, b, c) Source # |
Instance details Defined in Diagrams.Core.V type V (a, b, c) = V a
type V (QDiagram b v n m) Source # |
Instance details Defined in Diagrams.Core.Types type V (QDiagram b v n m) = v
type V (SubMap b v n m) Source # |
Instance details Defined in Diagrams.Core.Types type V (SubMap b v n m) = v
type V (Subdiagram b v n m) Source # |
Instance details Defined in Diagrams.Core.Types type V (Subdiagram b v n m) = v

type family N a Source #

The numerical field for the object, the number type used for calculations.

#### Instances

Instances details

type N (Set a) Source # |
Instance details Defined in Diagrams.Core.V type N (Set a) = N a
type N (TransInv t) Source # |
Instance details Defined in Diagrams.Core.Transform type N (TransInv t) = N t
type N (Deletable m) Source # |
Instance details Defined in Diagrams.Core.V type N (Deletable m) = N m
type N (Split m) Source # |
Instance details Defined in Diagrams.Core.V type N (Split m) = N m
type N (Maybe a) Source # |
Instance details Defined in Diagrams.Core.V type N (Maybe a) = N a
type N [a] Source # |
Instance details Defined in Diagrams.Core.V type N [a] = N a
type N (Map k a) Source # |
Instance details Defined in Diagrams.Core.V type N (Map k a) = N a
type N (Envelope v n) Source # |
Instance details Defined in Diagrams.Core.Envelope type N (Envelope v n) = n
type N (Measured n a) Source # |
Instance details Defined in Diagrams.Core.Measure type N (Measured n a) = N a
type N (Attribute v n) Source # |
Instance details Defined in Diagrams.Core.Style type N (Attribute v n) = n
type N (Style v n) Source # |
Instance details Defined in Diagrams.Core.Style type N (Style v n) = n
type N (Trace v n) Source # |
Instance details Defined in Diagrams.Core.Trace type N (Trace v n) = n
type N (Transformation v n) Source # |
Instance details Defined in Diagrams.Core.Transform type N (Transformation v n) = n
type N (Point v n) Source # |
Instance details Defined in Diagrams.Core.Points type N (Point v n) = n
type N (m :+: n) Source # |
Instance details Defined in Diagrams.Core.V type N (m :+: n) = N m
type N (a, b) Source # |
Instance details Defined in Diagrams.Core.V type N (a, b) = N a
type N (a -> b) Source # |
Instance details Defined in Diagrams.Core.V type N (a -> b) = N b
type N (Query v n m) Source # |
Instance details Defined in Diagrams.Core.Query type N (Query v n m) = n
type N (Prim b v n) Source # |
Instance details Defined in Diagrams.Core.Types type N (Prim b v n) = n
type N (a, b, c) Source # |
Instance details Defined in Diagrams.Core.V type N (a, b, c) = N a
type N (QDiagram b v n m) Source # |
Instance details Defined in Diagrams.Core.Types type N (QDiagram b v n m) = n
type N (SubMap b v n m) Source # |
Instance details Defined in Diagrams.Core.Types type N (SubMap b v n m) = n
type N (Subdiagram b v n m) Source # |
Instance details Defined in Diagrams.Core.Types type N (Subdiagram b v n m) = n

type Vn a = V a (N a) Source #

Convenient type alias to retrieve the vector type associated with an object's vector space. This is usually used as `Vn a ~ v n` where `v` is the vector space and `n` is the numerical field.

type InSpace (v :: Type -> Type) n a = (V a ~ v, N a ~ n, Additive v, Num n) Source #

`InSpace v n a` means the type `a` belongs to the vector space `v n`, where `v` is `Additive` and `n` is a `Num`.

type SameSpace a b = (V a ~ V b, N a ~ N b) Source #

`SameSpace a b` means the types `a` and `b` belong to the same vector space `v n`.