manifolds-core 0.4.4.0 → 0.4.5.0
raw patch · 4 files changed
+163/−30 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Math.Manifold.Core.PseudoAffine: BoundarylessWitness :: BoundarylessWitness m
- Math.Manifold.Core.PseudoAffine: PseudoAffineWitness :: SemimanifoldWitness x -> PseudoAffineWitness x
- Math.Manifold.Core.PseudoAffine: SemimanifoldWitness :: BoundarylessWitness (Interior x) -> SemimanifoldWitness x
- Math.Manifold.Core.PseudoAffine: class AdditiveGroup (Needle x) => Semimanifold x where type family Needle x :: * type family Interior x :: * Needle x = GenericNeedle x Interior x = x (.+~^) = addvp where addvp :: forall x. Semimanifold x => Interior x -> Needle x -> x addvp p = fromInterior . tp p where (Tagged tp) = translateP :: Tagged x (Interior x -> Needle x -> Interior x) fromInterior p = p .+~^ zeroV toInterior p = fmap GenericInterior $ toInterior (from p :: VRep x) translateP = Tagged $ case translateP :: Tagged (VRep x) (Interior (VRep x) -> Needle (VRep x) -> Interior (VRep x)) of { Tagged tp -> \ (GenericInterior p) (GenericNeedle v) -> GenericInterior $ tp p v } p .-~^ v = p .+~^ negateV v semimanifoldWitness = SemimanifoldWitness BoundarylessWitness
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Constructor Math.Manifold.Core.PseudoAffine.C1_0GenericInterior
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Constructor Math.Manifold.Core.PseudoAffine.C1_0GenericNeedle
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Constructor Math.Manifold.Core.PseudoAffine.C1_0InteriorProductSpace
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Constructor Math.Manifold.Core.PseudoAffine.C1_0NeedleProductSpace
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Datatype Math.Manifold.Core.PseudoAffine.D1GenericInterior
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Datatype Math.Manifold.Core.PseudoAffine.D1GenericNeedle
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Datatype Math.Manifold.Core.PseudoAffine.D1InteriorProductSpace
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Datatype Math.Manifold.Core.PseudoAffine.D1NeedleProductSpace
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Selector Math.Manifold.Core.PseudoAffine.S1_0_0GenericInterior
- Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Selector Math.Manifold.Core.PseudoAffine.S1_0_0GenericNeedle
- Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.PseudoAffine Math.Manifold.Core.Types.D¹
- Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.PseudoAffine Math.Manifold.Core.Types.S¹
- Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.PseudoAffine Math.Manifold.Core.Types.S⁰
- Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.Semimanifold Math.Manifold.Core.Types.D¹
- Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.Semimanifold Math.Manifold.Core.Types.S¹
- Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.Semimanifold Math.Manifold.Core.Types.S⁰
- Math.Manifold.Core.Types: S¹ :: Double -> S¹
- Math.Manifold.Core.Types: instance GHC.Classes.Eq Math.Manifold.Core.Types.S⁰
- Math.Manifold.Core.Types: instance GHC.Show.Show Math.Manifold.Core.Types.D¹
- Math.Manifold.Core.Types: instance GHC.Show.Show Math.Manifold.Core.Types.S¹
- Math.Manifold.Core.Types: instance GHC.Show.Show Math.Manifold.Core.Types.S⁰
- Math.Manifold.Core.Types: type ℝP¹ = S¹
+ Math.Manifold.Core.PseudoAffine: FibreBundle :: !(Interior b) -> !f -> FibreBundle b f
+ Math.Manifold.Core.PseudoAffine: [BoundarylessWitness] :: (Semimanifold m, Interior m ~ m) => BoundarylessWitness m
+ Math.Manifold.Core.PseudoAffine: [PseudoAffineWitness] :: (PseudoAffine (Interior x), PseudoAffine (Needle x)) => SemimanifoldWitness x -> PseudoAffineWitness x
+ Math.Manifold.Core.PseudoAffine: [SemimanifoldWitness] :: (Semimanifold (Needle x), Needle (Interior x) ~ Needle x, Needle (Needle x) ~ Needle x, Interior (Needle x) ~ Needle x) => BoundarylessWitness (Interior x) -> SemimanifoldWitness x
+ Math.Manifold.Core.PseudoAffine: [baseSpace] :: FibreBundle b f -> !(Interior b)
+ Math.Manifold.Core.PseudoAffine: [fibreSpace] :: FibreBundle b f -> !f
+ Math.Manifold.Core.PseudoAffine: class AdditiveGroup (Needle x) => Semimanifold x where {
+ Math.Manifold.Core.PseudoAffine: data FibreBundle b f
+ Math.Manifold.Core.PseudoAffine: instance (GHC.Show.Show (Math.Manifold.Core.PseudoAffine.Interior b), GHC.Show.Show f) => GHC.Show.Show (Math.Manifold.Core.PseudoAffine.FibreBundle b f)
+ Math.Manifold.Core.PseudoAffine: instance GHC.Generics.Generic (Math.Manifold.Core.PseudoAffine.FibreBundle b f)
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.PseudoAffine Math.Manifold.Core.Types.Internal.D¹
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.PseudoAffine Math.Manifold.Core.Types.Internal.S¹
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.PseudoAffine Math.Manifold.Core.Types.Internal.S⁰
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.PseudoAffine Math.Manifold.Core.Types.Internal.ℝP¹
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.PseudoAffine Math.Manifold.Core.Types.Internal.ℝP⁰
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.Semimanifold Math.Manifold.Core.Types.Internal.D¹
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.Semimanifold Math.Manifold.Core.Types.Internal.S¹
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.Semimanifold Math.Manifold.Core.Types.Internal.S⁰
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.Semimanifold Math.Manifold.Core.Types.Internal.ℝP¹
+ Math.Manifold.Core.PseudoAffine: instance Math.Manifold.Core.PseudoAffine.Semimanifold Math.Manifold.Core.Types.Internal.ℝP⁰
+ Math.Manifold.Core.PseudoAffine: toUnitrange :: ℝ -> ℝ
+ Math.Manifold.Core.PseudoAffine: toℝP¹range :: ℝ -> ℝ
+ Math.Manifold.Core.PseudoAffine: type Interior x = x;
+ Math.Manifold.Core.PseudoAffine: type Needle x = GenericNeedle x;
+ Math.Manifold.Core.PseudoAffine: type TangentBundle m = FibreBundle m (Needle m)
+ Math.Manifold.Core.PseudoAffine: type family Interior x :: *;
+ Math.Manifold.Core.PseudoAffine: }
+ Math.Manifold.Core.Types: CD¹ :: !Double -> !x -> CD¹ x
+ Math.Manifold.Core.Types: Cℝay :: !Double -> !x -> Cℝay x
+ Math.Manifold.Core.Types: D²Polar :: !Double -> !Double -> D²
+ Math.Manifold.Core.Types: HemisphereℝP²Polar :: !Double -> !Double -> ℝP²
+ Math.Manifold.Core.Types: HemisphereℝP¹Polar :: Double -> ℝP¹
+ Math.Manifold.Core.Types: S²Polar :: !Double -> !Double -> S²
+ Math.Manifold.Core.Types: S¹Polar :: Double -> S¹
+ Math.Manifold.Core.Types: [hParamCD¹] :: CD¹ x -> !Double
+ Math.Manifold.Core.Types: [hParamCℝay] :: Cℝay x -> !Double
+ Math.Manifold.Core.Types: [pParamCD¹] :: CD¹ x -> !x
+ Math.Manifold.Core.Types: [pParamCℝay] :: Cℝay x -> !x
+ Math.Manifold.Core.Types: [rParamD²] :: D² -> !Double
+ Math.Manifold.Core.Types: [φParamD²] :: D² -> !Double
+ Math.Manifold.Core.Types: [φParamS²] :: S² -> !Double
+ Math.Manifold.Core.Types: [φParamℝP²] :: ℝP² -> !Double
+ Math.Manifold.Core.Types: [φParamℝP¹] :: ℝP¹ -> Double
+ Math.Manifold.Core.Types: [ϑParamS²] :: S² -> !Double
+ Math.Manifold.Core.Types: [ϑParamℝP²] :: ℝP² -> !Double
+ Math.Manifold.Core.Types: data CD¹ x
+ Math.Manifold.Core.Types: data Cℝay x
+ Math.Manifold.Core.Types: data D²
+ Math.Manifold.Core.Types: data S²
+ Math.Manifold.Core.Types: data ℝP²
+ Math.Manifold.Core.Types: data ℝP⁰
+ Math.Manifold.Core.Types: newtype ℝP¹
+ Math.Manifold.Core.Types: ℝPZero :: ℝP⁰
- Math.Manifold.Core.PseudoAffine: alerpB :: (AffineSpace x, VectorSpace (Diff x), Scalar (Diff x) ~ ℝ) => x -> x -> D¹ -> x
+ Math.Manifold.Core.PseudoAffine: alerpB :: forall x. (AffineSpace x, VectorSpace (Diff x), Scalar (Diff x) ~ ℝ) => x -> x -> D¹ -> x
- Math.Manifold.Core.PseudoAffine: class Semimanifold x => PseudoAffine x where p .-~. q = return $ p .-~! q p .-~! q = case p .-~. q of { Just v -> v Nothing -> error "Attempt to calculate vector between points on disjoint manifold-regions." } pseudoAffineWitness = PseudoAffineWitness semimanifoldWitness
+ Math.Manifold.Core.PseudoAffine: class Semimanifold x => PseudoAffine x
- Math.Manifold.Core.PseudoAffine: palerp :: (PseudoAffine x, VectorSpace (Needle x)) => x -> x -> Maybe (Scalar (Needle x) -> x)
+ Math.Manifold.Core.PseudoAffine: palerp :: forall x. (PseudoAffine x, VectorSpace (Needle x)) => x -> x -> Maybe (Scalar (Needle x) -> x)
- Math.Manifold.Core.PseudoAffine: palerpB :: (PseudoAffine x, VectorSpace (Needle x), Scalar (Needle x) ~ ℝ) => x -> x -> Maybe (D¹ -> x)
+ Math.Manifold.Core.PseudoAffine: palerpB :: forall x. (PseudoAffine x, VectorSpace (Needle x), Scalar (Needle x) ~ ℝ) => x -> x -> Maybe (D¹ -> x)
- Math.Manifold.Core.PseudoAffine: pseudoAffineWitness :: PseudoAffine x => PseudoAffineWitness x
+ Math.Manifold.Core.PseudoAffine: pseudoAffineWitness :: (PseudoAffine x, PseudoAffine (Interior x), PseudoAffine (Needle x)) => PseudoAffineWitness x
- Math.Manifold.Core.PseudoAffine: semimanifoldWitness :: Semimanifold x => SemimanifoldWitness x
+ Math.Manifold.Core.PseudoAffine: semimanifoldWitness :: (Semimanifold x, Semimanifold (Interior x), Semimanifold (Needle x), Interior (Interior x) ~ Interior x, Needle (Interior x) ~ Needle x, Needle (Needle x) ~ Needle x, Interior (Needle x) ~ Needle x) => SemimanifoldWitness x
- Math.Manifold.Core.PseudoAffine: toInterior :: Semimanifold x => x -> Maybe (Interior x)
+ Math.Manifold.Core.PseudoAffine: toInterior :: (Semimanifold x, Generic x, Semimanifold (VRep x), Interior x ~ GenericInterior x) => x -> Maybe (Interior x)
- Math.Manifold.Core.PseudoAffine: translateP :: Semimanifold x => Tagged x (Interior x -> Needle x -> Interior x)
+ Math.Manifold.Core.PseudoAffine: translateP :: (Semimanifold x, Generic x, Semimanifold (VRep x), Interior x ~ GenericInterior x, Needle x ~ GenericNeedle x) => Tagged x (Interior x -> Needle x -> Interior x)
Files
- Math/Manifold/Core/PseudoAffine.hs +46/−6
- Math/Manifold/Core/Types.hs +27/−22
- Math/Manifold/Core/Types/Internal.hs +88/−0
- manifolds-core.cabal +2/−2
Math/Manifold/Core/PseudoAffine.hs view
@@ -15,6 +15,7 @@ {-# LANGUAGE GADTs #-} {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE UnicodeSyntax #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators #-}@@ -209,6 +210,18 @@ +-- | A fibre bundle combines points in the /base space/ @b@ with points in the /fibre/+-- @f@. The type @FibreBundle b f@ is thus isomorphic to the tuple space @(b,f)@, but+-- it can have a different topology, the prime example being 'TangentBundle', where+-- nearby points may have differently-oriented tangent spaces.+data FibreBundle b f = FibreBundle+ { baseSpace :: !(Interior b)+ , fibreSpace :: !f+ } deriving (Generic)+deriving instance (Show (Interior b), Show f) => Show (FibreBundle b f)++-- | Points on a manifold, combined with vectors in the respective tangent space.+type TangentBundle m = FibreBundle m (Needle m) @@ -340,14 +353,12 @@ fromInterior = id toInterior = pure translateP = Tagged (.+~^)- S¹ φ₀ .+~^ δφ- | φ' < 0 = S¹ $ φ' + tau- | otherwise = S¹ $ φ'+ S¹Polar φ₀ .+~^ δφ = S¹Polar $ φ' where φ' = toS¹range $ φ₀ + δφ instance PseudoAffine S¹ where- S¹ φ₁ .-~. S¹ φ₀- | δφ > pi = pure (δφ - 2*pi)- | δφ < (-pi) = pure (δφ + 2*pi)+ S¹Polar φ₁ .-~. S¹Polar φ₀+ | δφ > pi = pure (δφ - tau)+ | δφ < (-pi) = pure (δφ + tau) | otherwise = pure δφ where δφ = φ₁ - φ₀ @@ -367,16 +378,45 @@ +instance Semimanifold ℝP⁰ where+ type Needle ℝP⁰ = ZeroDim ℝ+ fromInterior = id+ toInterior = pure+ translateP = Tagged (.+~^)+ p .+~^ Origin = p+ p .-~^ Origin = p+instance PseudoAffine ℝP⁰ where+ ℝPZero .-~. ℝPZero = pure Origin +instance Semimanifold ℝP¹ where+ type Needle ℝP¹ = ℝ+ fromInterior = id+ toInterior = pure+ translateP = Tagged (.+~^)+ HemisphereℝP¹Polar r₀ .+~^ δr = HemisphereℝP¹Polar . toℝP¹range $ r₀ + δr+instance PseudoAffine ℝP¹ where+ HemisphereℝP¹Polar φ₁ .-~. HemisphereℝP¹Polar φ₀+ | δφ > pi/2 = pure (δφ - pi)+ | δφ < (-pi/2) = pure (δφ + pi)+ | otherwise = pure δφ+ where δφ = φ₁ - φ₀ ++ tau :: ℝ tau = 2 * pi toS¹range :: ℝ -> ℝ toS¹range φ = (φ+pi)`mod'`tau - pi++toℝP¹range :: ℝ -> ℝ+toℝP¹range φ = (φ+pi/2)`mod'`pi - pi/2++toUnitrange :: ℝ -> ℝ+toUnitrange φ = (φ+1)`mod'`2 - 1
Math/Manifold/Core/Types.hs view
@@ -13,10 +13,19 @@ {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ViewPatterns #-} -module Math.Manifold.Core.Types where+module Math.Manifold.Core.Types+ ( ℝ⁰, ℝ+ , S⁰(..), otherHalfSphere, S¹(..), pattern S¹, S²(..), pattern S²+ , D¹(..), fromIntv0to1, D²(..), pattern D²+ , ℝP⁰(..), ℝP¹(..), pattern ℝP¹, ℝP²(..), pattern ℝP²+ , Cℝay(..), CD¹(..)+ ) where +import Math.Manifold.Core.Types.Internal import Data.VectorSpace import Math.Manifold.VectorSpace.ZeroDimensional@@ -25,45 +34,41 @@ import Data.Void import Data.Monoid -import Control.Applicative (Const(..), Alternative(..)) --- | The zero-dimensional sphere is actually just two points. Implementation might--- therefore change to @ℝ⁰ 'Control.Category.Constrained.+' ℝ⁰@: the disjoint sum of two--- single-point spaces.-data S⁰ = PositiveHalfSphere | NegativeHalfSphere deriving(Eq, Show)- otherHalfSphere :: S⁰ -> S⁰ otherHalfSphere PositiveHalfSphere = NegativeHalfSphere otherHalfSphere NegativeHalfSphere = PositiveHalfSphere --- | The unit circle.-newtype S¹ = S¹ { φParamS¹ :: Double -- ^ Must be in range @[-π, π[@.- } deriving (Show)--+{-# DEPRECATED S¹ "Use Math.Manifold.Core.Types.S¹Polar" #-}+pattern S¹ :: Double -> S¹+pattern S¹ φ = S¹Polar φ +{-# DEPRECATED ℝP¹ "Use Math.Manifold.Core.Types.HemisphereℝP¹Polar (notice: different range)" #-}+pattern ℝP¹ :: Double -> ℝP¹+pattern ℝP¹ r <- (HemisphereℝP¹Polar ((2/pi*)->r))+ where ℝP¹ r = HemisphereℝP¹Polar $ r * pi/2 -type ℝP¹ = S¹+{-# DEPRECATED S² "Use Math.Manifold.Core.Types.S²Polar" #-}+pattern S² :: Double -> Double -> S²+pattern S² ϑ φ = S²Polar ϑ φ +{-# DEPRECATED ℝP² "Use Math.Manifold.Core.Types.HemisphereℝP²Polar (notice: different range)" #-}+pattern ℝP² :: Double -> Double -> ℝP²+pattern ℝP² r φ <- (HemisphereℝP²Polar ((2/pi*)->r) φ)+ where ℝP² r φ = HemisphereℝP²Polar (r * pi/2) φ +{-# DEPRECATED D² "Use Math.Manifold.Core.Types.D²Polar" #-}+pattern D² :: Double -> Double -> D²+pattern D² r φ = D²Polar r φ --- | 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¹ = D¹ { xParamD¹ :: Double -- ^ Range @[-1, 1]@.- } deriving (Show) fromIntv0to1 :: ℝ -> D¹ fromIntv0to1 x | x<0 = D¹ (-1) | x>1 = D¹ 1 | otherwise = D¹ $ x*2 - 1----type ℝ = Double-type ℝ⁰ = ZeroDim ℝ
+ Math/Manifold/Core/Types/Internal.hs view
@@ -0,0 +1,88 @@+-- |+-- Module : Math.Manifold.Core.Types.Internal+-- Copyright : (c) Justus Sagemüller 2018+-- License : GPL v3+-- +-- Maintainer : (@) jsagemue $ uni-koeln.de+-- Stability : experimental+-- Portability : portable+-- +-- Several low-dimensional manifolds, represented in some simple way as Haskell+-- data types. All these are in the 'PseudoAffine' class.+-- +++module Math.Manifold.Core.Types.Internal where++import Math.Manifold.VectorSpace.ZeroDimensional++++-- | The zero-dimensional sphere is actually just two points. Implementation might+-- therefore change to @ℝ⁰ 'Control.Category.Constrained.+' ℝ⁰@: the disjoint sum of two+-- single-point spaces.+data S⁰ = PositiveHalfSphere | NegativeHalfSphere deriving(Eq, Show)++data ℝP⁰ = ℝPZero deriving (Eq, Show)++-- | The unit circle.+newtype S¹ = S¹Polar { φParamS¹ :: Double -- ^ Must be in range @[-π, π[@.+ } deriving (Show)+++newtype ℝP¹ = HemisphereℝP¹Polar { φParamℝP¹ :: Double -- ^ Range @[-π/2,π/2[@.+ } deriving (Show)++-- | The ordinary unit sphere.+data S² = S²Polar { ϑParamS² :: !Double -- ^ Range @[0, π[@.+ , φParamS² :: !Double -- ^ Range @[-π, π[@.+ } deriving (Show)+++-- | 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² = HemisphereℝP²Polar { ϑParamℝP² :: !Double -- ^ Range @[0, π/2]@.+ , φParamℝP² :: !Double -- ^ Range @[-π, π[@.+ } deriving (Show)+++-- | The standard, closed unit disk. Homeomorphic to the cone over 'S¹', 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² = D²Polar { rParamD² :: !Double -- ^ Range @[0, 1]@.+ , φParamD² :: !Double -- ^ Range @[-π, π[@.+ } deriving (Show)++-- | A (closed) cone over a space @x@ is the product of @x@ with the closed interval 'D¹'+-- 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 'D²') in the+-- special case @x = 'S¹'@.+data CD¹ x = CD¹ { hParamCD¹ :: !Double -- ^ Range @[0, 1]@+ , pParamCD¹ :: !x -- ^ Irrelevant at @h = 0@.+ } deriving (Show)+++-- | 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.+data Cℝay x = Cℝay { hParamCℝay :: !Double -- ^ Range @[0, ∞[@+ , pParamCℝay :: !x -- ^ Irrelevant at @h = 0@.+ } deriving (Show)++-- | 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¹ = D¹ { xParamD¹ :: Double -- ^ Range @[-1, 1]@.+ } deriving (Show)++type ℝ = Double+type ℝ⁰ = ZeroDim ℝ++++
manifolds-core.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: manifolds-core-version: 0.4.4.0+version: 0.4.5.0 synopsis: The basic classes for the manifolds hierarchy. description: The basic classes for the <http://hackage.haskell.org/package/manifolds manifolds> hierarchy.@@ -21,7 +21,7 @@ exposed-modules: Math.Manifold.Core.Types , Math.Manifold.Core.PseudoAffine , Math.Manifold.VectorSpace.ZeroDimensional- -- other-modules: + other-modules: Math.Manifold.Core.Types.Internal other-extensions: FlexibleInstances, UndecidableInstances, ExplicitNamespaces, TypeFamilies, FunctionalDependencies, FlexibleContexts, GADTs, RankNTypes, TupleSections, ConstraintKinds, PatternGuards, TypeOperators, ScopedTypeVariables, RecordWildCards, DataKinds, StandaloneDeriving, DefaultSignatures, UnicodeSyntax, MultiWayIf build-depends: base >=4.5 && <5 , vector-space >=0.11