dimensions-0.1.0.0: Safe type-level dimensionality for multidimensional data

Copyright(c) Artem Chirkin
LicenseBSD3
Maintainerchirkin@arch.ethz.ch
Safe HaskellNone
LanguageHaskell2010

Numeric.Dimensions.XDim

Contents

Description

Some dimensions in a type-level dimension list may by not known at compile time.

Synopsis

Data types

data XDim xns Source #

Similar to SomeNat, hide some dimensions under an existential constructor. In contrast to SomeDim, it preserves the order of dimensions, and it can keep some of the dimensions in the list static while making other dimensions known only at runtime.

Constructors

(FixedDim xns ns ~ ns, FixedXDim xns ns ~ xns) => XDim (Dim ns) 

Instances

Eq (XDim xds) Source # 

Methods

(==) :: XDim xds -> XDim xds -> Bool #

(/=) :: XDim xds -> XDim xds -> Bool #

Ord (XDim xds) Source # 

Methods

compare :: XDim xds -> XDim xds -> Ordering #

(<) :: XDim xds -> XDim xds -> Bool #

(<=) :: XDim xds -> XDim xds -> Bool #

(>) :: XDim xds -> XDim xds -> Bool #

(>=) :: XDim xds -> XDim xds -> Bool #

max :: XDim xds -> XDim xds -> XDim xds #

min :: XDim xds -> XDim xds -> XDim xds #

Show (XDim xns) Source # 

Methods

showsPrec :: Int -> XDim xns -> ShowS #

show :: XDim xns -> String #

showList :: [XDim xns] -> ShowS #

xdim :: forall ds xds. (Dimensions ds, XDimensions xds, FixedXDim xds ds ~ xds) => Dim xds Source #

Loose compile-time information about dimensionalities

xDimVal :: Dim (xns :: [XNat]) -> XDim xns Source #

Construct dimensionality at runtime

Constraints

class XDimensions xds where Source #

Minimal complete definition

wrapDim

Methods

wrapDim :: FixedXDim xds ds ~ xds => Dim ds -> Dim xds Source #

Instances

XDimensions ([] XNat) Source # 

Methods

wrapDim :: ([XNat] ~ FixedXDim [XNat] ds) [XNat] => Dim [Nat] ds -> Dim [XNat] [XNat] Source #

XDimensions xs => XDimensions ((:) XNat (N n) xs) Source # 

Methods

wrapDim :: ([XNat] ~ FixedXDim ((XNat ': N n) xs) ds) ((XNat ': N n) xs) => Dim [Nat] ds -> Dim [XNat] ((XNat ': N n) xs) Source #

XDimensions xs => XDimensions ((:) XNat (XN m) xs) Source # 

Methods

wrapDim :: ([XNat] ~ FixedXDim ((XNat ': XN m) xs) ds) ((XNat ': XN m) xs) => Dim [Nat] ds -> Dim [XNat] ((XNat ': XN m) xs) Source #