-- | -- Module : Math.VectorSpace.ZeroDimensional -- Copyright : (c) Justus Sagemüller 2016 -- License : GPL v3 -- -- Maintainer : (@) sagemueller $ geo.uni-koeln.de -- Stability : experimental -- Portability : portable -- {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE UnicodeSyntax #-} {-# LANGUAGE CPP #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE StandaloneDeriving #-} module Math.VectorSpace.ZeroDimensional ( ZeroDim (..) ) where import Data.AffineSpace import Data.VectorSpace import Data.Basis import Data.Void data ZeroDim s = Origin instance Monoid (ZeroDim s) where mempty = Origin mappend Origin Origin = Origin instance AffineSpace (ZeroDim s) where type Diff (ZeroDim s) = ZeroDim s Origin .+^ Origin = Origin Origin .-. Origin = Origin instance AdditiveGroup (ZeroDim s) where zeroV = Origin Origin ^+^ Origin = Origin negateV Origin = Origin instance VectorSpace (ZeroDim s) where type Scalar (ZeroDim s) = s _ *^ Origin = Origin instance HasBasis (ZeroDim s) where type Basis (ZeroDim k) = Void basisValue = absurd decompose Origin = [] decompose' Origin = absurd