{-# LANGUAGE StandaloneDeriving, FlexibleContexts, UndecidableInstances #-}
module Data.Manifold.Types.Stiefel where
import Data.Maybe
import qualified Data.Vector as Arr
import Data.VectorSpace
import Data.AffineSpace
import Math.LinearMap.Category
import Data.Manifold.Types.Primitive ((^), empty, embed, coEmbed)
import Data.Manifold.PseudoAffine
import qualified Prelude as Hask hiding(foldl, sum, sequence)
import qualified Control.Applicative as Hask
import qualified Control.Monad as Hask hiding(forM_, sequence)
import Control.Category.Constrained.Prelude hiding
((^), all, elem, sum, forM, Foldable(..), Traversable)
import Control.Arrow.Constrained
import Control.Monad.Constrained hiding (forM)
import Data.Foldable.Constrained
newtype Stiefel1 v = Stiefel1 { getStiefel1N :: DualVector v }
deriving instance (Show (DualVector v)) => Show (Stiefel1 v)