manifolds-core-0.6.1.0: The basic classes for the manifolds hierarchy.
Copyright(c) Justus Sagemüller 2016
LicenseGPL v3
Maintainer(@) jsag $ hvl.no
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Math.Manifold.Core.Types

Description

Several low-dimensional manifolds, represented in some simple way as Haskell data types. All these are in the PseudoAffine class.

Synopsis

Documentation

data EmptyMfd v Source #

The empty space can be considered a manifold with any sort of tangent space.

Instances

Instances details
Empty (EmptyMfd v) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

eliminate :: EmptyMfd v -> x #

Eq (EmptyMfd v) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

(==) :: EmptyMfd v -> EmptyMfd v -> Bool #

(/=) :: EmptyMfd v -> EmptyMfd v -> Bool #

Ord (EmptyMfd v) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

compare :: EmptyMfd v -> EmptyMfd v -> Ordering #

(<) :: EmptyMfd v -> EmptyMfd v -> Bool #

(<=) :: EmptyMfd v -> EmptyMfd v -> Bool #

(>) :: EmptyMfd v -> EmptyMfd v -> Bool #

(>=) :: EmptyMfd v -> EmptyMfd v -> Bool #

max :: EmptyMfd v -> EmptyMfd v -> EmptyMfd v #

min :: EmptyMfd v -> EmptyMfd v -> EmptyMfd v #

type S⁰ = S⁰_ Double Source #

The zero-dimensional sphere is actually just two points. Implementation might therefore change to ℝ⁰ + ℝ⁰: the disjoint sum of two single-point spaces.

data S⁰_ r Source #

Instances

Instances details
Generic (S⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Associated Types

type Rep (S⁰_ r) :: Type -> Type #

Methods

from :: S⁰_ r -> Rep (S⁰_ r) x #

to :: Rep (S⁰_ r) x -> S⁰_ r #

Show (S⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

showsPrec :: Int -> S⁰_ r -> ShowS #

show :: S⁰_ r -> String #

showList :: [S⁰_ r] -> ShowS #

Eq (S⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

(==) :: S⁰_ r -> S⁰_ r -> Bool #

(/=) :: S⁰_ r -> S⁰_ r -> Bool #

type Rep (S⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

type Rep (S⁰_ r) = D1 ('MetaData "S\8304_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'False) (C1 ('MetaCons "PositiveHalfSphere" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NegativeHalfSphere" 'PrefixI 'False) (U1 :: Type -> Type))

type = S¹_ Double Source #

The unit circle.

newtype S¹_ r Source #

Constructors

S¹Polar 

Fields

Instances

Instances details
Generic (S¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Associated Types

type Rep (S¹_ r) :: Type -> Type #

Methods

from :: S¹_ r -> Rep (S¹_ r) x #

to :: Rep (S¹_ r) x -> S¹_ r #

Show r => Show (S¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

showsPrec :: Int -> S¹_ r -> ShowS #

show :: S¹_ r -> String #

showList :: [S¹_ r] -> ShowS #

(Eq r, RealFloat r) => Eq (S¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

(==) :: S¹_ r -> S¹_ r -> Bool #

(/=) :: S¹_ r -> S¹_ r -> Bool #

type Rep (S¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

type Rep (S¹_ r) = D1 ('MetaData "S\185_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'True) (C1 ('MetaCons "S\185Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "\966ParamS\185") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 r)))

pattern :: Double -> Source #

Deprecated: Use Math.Manifold.Core.Types.S¹Polar

type = S²_ Double Source #

The ordinary unit sphere.

data S²_ r Source #

Constructors

S²Polar 

Fields

Instances

Instances details
Generic (S²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Associated Types

type Rep (S²_ r) :: Type -> Type #

Methods

from :: S²_ r -> Rep (S²_ r) x #

to :: Rep (S²_ r) x -> S²_ r #

Show r => Show (S²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

showsPrec :: Int -> S²_ r -> ShowS #

show :: S²_ r -> String #

showList :: [S²_ r] -> ShowS #

(Eq r, RealFloat r) => Eq (S²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

(==) :: S²_ r -> S²_ r -> Bool #

(/=) :: S²_ r -> S²_ r -> Bool #

type Rep (S²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

type Rep (S²_ r) = D1 ('MetaData "S\178_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'False) (C1 ('MetaCons "S\178Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "\977ParamS\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r) :*: S1 ('MetaSel ('Just "\966ParamS\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)))

pattern :: Double -> Double -> Source #

Deprecated: Use Math.Manifold.Core.Types.S²Polar

type = D¹_ Double Source #

The “one-dimensional disk” – really just the line segment between the two points -1 and 1 of S⁰, i.e. this is simply a closed interval.

newtype D¹_ r Source #

Constructors

 

Fields

Instances

Instances details
Generic (D¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Associated Types

type Rep (D¹_ r) :: Type -> Type #

Methods

from :: D¹_ r -> Rep (D¹_ r) x #

to :: Rep (D¹_ r) x -> D¹_ r #

Show r => Show (D¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

showsPrec :: Int -> D¹_ r -> ShowS #

show :: D¹_ r -> String #

showList :: [D¹_ r] -> ShowS #

type Rep (D¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

type Rep (D¹_ r) = D1 ('MetaData "D\185_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'True) (C1 ('MetaCons "D\185" 'PrefixI 'True) (S1 ('MetaSel ('Just "xParamD\185") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 r)))

type = D²_ Double Source #

The standard, closed unit disk. Homeomorphic to the cone over , but not in the the obvious, “flat” way. (In is not homeomorphic, despite the almost identical ADT definition, to the projective space ℝP²!)

data D²_ r Source #

Constructors

D²Polar 

Fields

Instances

Instances details
Generic (D²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Associated Types

type Rep (D²_ r) :: Type -> Type #

Methods

from :: D²_ r -> Rep (D²_ r) x #

to :: Rep (D²_ r) x -> D²_ r #

Show r => Show (D²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

showsPrec :: Int -> D²_ r -> ShowS #

show :: D²_ r -> String #

showList :: [D²_ r] -> ShowS #

type Rep (D²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

type Rep (D²_ r) = D1 ('MetaData "D\178_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'False) (C1 ('MetaCons "D\178Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "rParamD\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r) :*: S1 ('MetaSel ('Just "\966ParamD\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)))

pattern :: Double -> Double -> Source #

Deprecated: Use Math.Manifold.Core.Types.D²Polar

data ℝP⁰_ r Source #

Constructors

ℝPZero 

Instances

Instances details
Generic (ℝP⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Associated Types

type Rep (ℝP⁰_ r) :: Type -> Type #

Methods

from :: ℝP⁰_ r -> Rep (ℝP⁰_ r) x #

to :: Rep (ℝP⁰_ r) x -> ℝP⁰_ r #

Show (ℝP⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

showsPrec :: Int -> ℝP⁰_ r -> ShowS #

show :: ℝP⁰_ r -> String #

showList :: [ℝP⁰_ r] -> ShowS #

Eq (ℝP⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

(==) :: ℝP⁰_ r -> ℝP⁰_ r -> Bool #

(/=) :: ℝP⁰_ r -> ℝP⁰_ r -> Bool #

PseudoAffine (ℝP⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

Semimanifold (ℝP⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

Associated Types

type Needle (ℝP⁰_ r) Source #

type Rep (ℝP⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

type Rep (ℝP⁰_ r) = D1 ('MetaData "\8477P\8304_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'False) (C1 ('MetaCons "\8477PZero" 'PrefixI 'False) (U1 :: Type -> Type))
type Needle (ℝP⁰_ r) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

type Needle (ℝP⁰_ r) = ZeroDim r

newtype ℝP¹_ r Source #

Constructors

HemisphereℝP¹Polar 

Fields

Instances

Instances details
Generic (ℝP¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Associated Types

type Rep (ℝP¹_ r) :: Type -> Type #

Methods

from :: ℝP¹_ r -> Rep (ℝP¹_ r) x #

to :: Rep (ℝP¹_ r) x -> ℝP¹_ r #

Show r => Show (ℝP¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

showsPrec :: Int -> ℝP¹_ r -> ShowS #

show :: ℝP¹_ r -> String #

showList :: [ℝP¹_ r] -> ShowS #

ℝeal r => PseudoAffine (ℝP¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

ℝeal r => Semimanifold (ℝP¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

Associated Types

type Needle (ℝP¹_ r) Source #

type Rep (ℝP¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

type Rep (ℝP¹_ r) = D1 ('MetaData "\8477P\185_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'True) (C1 ('MetaCons "Hemisphere\8477P\185Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "\966Param\8477P\185") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 r)))
type Needle (ℝP¹_ r) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

type Needle (ℝP¹_ r) = r

pattern ℝP¹ :: Double -> ℝP¹ Source #

Deprecated: Use Math.Manifold.Core.Types.HemisphereℝP¹Polar (notice: different range)

type ℝP² = ℝP²_ Double Source #

The two-dimensional real projective space, implemented as a disk with opposing points on the rim glued together. Image this disk as the northern hemisphere of a unit sphere; ℝP² is the space of all straight lines passing through the origin of ℝ³, and each of these lines is represented by the point at which it passes through the hemisphere.

data ℝP²_ r Source #

Constructors

HemisphereℝP²Polar 

Fields

Instances

Instances details
Generic (ℝP²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Associated Types

type Rep (ℝP²_ r) :: Type -> Type #

Methods

from :: ℝP²_ r -> Rep (ℝP²_ r) x #

to :: Rep (ℝP²_ r) x -> ℝP²_ r #

Show r => Show (ℝP²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

Methods

showsPrec :: Int -> ℝP²_ r -> ShowS #

show :: ℝP²_ r -> String #

showList :: [ℝP²_ r] -> ShowS #

type Rep (ℝP²_ r) Source # 
Instance details

Defined in Math.Manifold.Core.Types.Internal

type Rep (ℝP²_ r) = D1 ('MetaData "\8477P\178_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'False) (C1 ('MetaCons "Hemisphere\8477P\178Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "\977Param\8477P\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r) :*: S1 ('MetaSel ('Just "\966Param\8477P\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)))

pattern ℝP² :: Double -> Double -> ℝP² Source #

Deprecated: Use Math.Manifold.Core.Types.HemisphereℝP²Polar (notice: different range)

data Cℝay x Source #

An open cone is homeomorphic to a closed cone without the “lid”, i.e. without the “last copy” of x, at the far end of the height interval. Since that means the height does not include its supremum, it is actually more natural to express it as the entire real ray, hence the name.

Constructors

Cℝay 

Fields

Instances

Instances details
Generic (Cℝay x) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

Associated Types

type Rep (Cℝay x) :: Type -> Type #

Methods

from :: Cℝay x -> Rep (Cℝay x) x0 #

to :: Rep (Cℝay x) x0 -> Cℝay x #

(Show x, Show (Scalar (Needle x))) => Show (Cℝay x) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

Methods

showsPrec :: Int -> Cℝay x -> ShowS #

show :: Cℝay x -> String #

showList :: [Cℝay x] -> ShowS #

type Rep (Cℝay x) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

type Rep (Cℝay x) = D1 ('MetaData "C\8477ay" "Math.Manifold.Core.PseudoAffine" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'False) (C1 ('MetaCons "C\8477ay" 'PrefixI 'True) (S1 ('MetaSel ('Just "hParamC\8477ay") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Scalar (Needle x))) :*: S1 ('MetaSel ('Just "pParamC\8477ay") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 x)))

data CD¹ x Source #

A (closed) cone over a space x is the product of x with the closed interval of “heights”, except on its “tip”: here, x is smashed to a single point.

This construct becomes (homeomorphic-to-) an actual geometric cone (and to ) in the special case x = .

Constructors

CD¹ 

Fields

Instances

Instances details
Generic (CD¹ x) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

Associated Types

type Rep (CD¹ x) :: Type -> Type #

Methods

from :: CD¹ x -> Rep (CD¹ x) x0 #

to :: Rep (CD¹ x) x0 -> CD¹ x #

(Show x, Show (Scalar (Needle x))) => Show (CD¹ x) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

Methods

showsPrec :: Int -> CD¹ x -> ShowS #

show :: CD¹ x -> String #

showList :: [CD¹ x] -> ShowS #

type Rep (CD¹ x) Source # 
Instance details

Defined in Math.Manifold.Core.PseudoAffine

type Rep (CD¹ x) = D1 ('MetaData "CD\185" "Math.Manifold.Core.PseudoAffine" "manifolds-core-0.6.1.0-7JLeNpkgg097AjSvrWgCob" 'False) (C1 ('MetaCons "CD\185" 'PrefixI 'True) (S1 ('MetaSel ('Just "hParamCD\185") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Scalar (Needle x))) :*: S1 ('MetaSel ('Just "pParamCD\185") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 x)))

Orphan instances

HasBasis () Source # 
Instance details

Associated Types

type Basis () #

Methods

basisValue :: Basis () -> () #

decompose :: () -> [(Basis (), Scalar ())] #

decompose' :: () -> Basis () -> Scalar () #

InnerSpace () Source # 
Instance details

Methods

(<.>) :: () -> () -> Scalar () #

VectorSpace () Source # 
Instance details

Associated Types

type Scalar () #

Methods

(*^) :: Scalar () -> () -> () #