packages feed

linear 0.9 → 0.9.1

raw patch · 2 files changed

+134/−1 lines, 2 filesdep +base-orphansdep ~base

Dependencies added: base-orphans

Dependency ranges changed: base

Files

linear.cabal view
@@ -1,6 +1,6 @@ name:          linear category:      Math, Algebra-version:       0.9+version:       0.9.1 license:       BSD3 cabal-version: >= 1.8 license-file:  LICENSE@@ -49,6 +49,7 @@     Linear.Metric     Linear.Plucker     Linear.Quaternion+    Linear.V0     Linear.V2     Linear.V3     Linear.V4
+ src/Linear/V0.hs view
@@ -0,0 +1,132 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ScopedTypeVariables #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Linear.V0+-- Copyright   :  (C) 2012-2013 Edward Kmett,+-- License     :  BSD-style (see the file LICENSE)+--+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  experimental+-- Portability :  non-portable+--+-- 0-D Vectors+----------------------------------------------------------------------------+module Linear.V0+  ( V0(..)+  ) where++import Control.Applicative+import Data.Data+import Data.Distributive+import Data.Foldable+import Data.Ix+import Data.Traversable+import Data.Semigroup+import Data.Functor.Bind+import Foreign.Storable (Storable(..))+import Linear.Core+import Linear.Metric+import Linear.Epsilon+import Linear.Vector+import Prelude hiding (sum)++-- $setup+-- >>> import Control.Lens++-- | A 0-dimensional vector+--+-- >>> pure 1 :: V0 Int+-- V0+--+-- >>> V0 + V0+-- V0+--+data V0 a = V0 deriving (Eq,Ord,Show,Read,Ix,Enum,Data,Typeable)++instance Functor V0 where+  fmap _ V0 = V0+  {-# INLINE fmap #-}+  _ <$ _ = V0+  {-# INLINE (<$) #-}++instance Foldable V0 where+  foldMap _ V0 = mempty+  {-# INLINE foldMap #-}++instance Traversable V0 where+  traverse _ V0 = pure V0+  {-# INLINE traverse #-}++instance Apply V0 where+  V0 <.> V0 = V0+  {-@ INLINE (<.>) #-}++instance Applicative V0 where+  pure _ = V0+  {-# INLINE pure #-}+  V0 <*> V0 = V0+  {-@ INLINE (<*>) #-}++instance Additive V0++instance Bind V0 where+  V0 >>- _ = V0+  {-# INLINE (>>-) #-}++instance Monad V0 where+  return _ = V0+  {-# INLINE return #-}+  V0 >>= _ = V0+  {-# INLINE (>>=) #-}++instance Num (V0 a) where+  V0 + V0 = V0+  {-# INLINE (+) #-}+  V0 - V0 = V0+  {-# INLINE (-) #-}+  V0 * V0 = V0+  {-# INLINE (*) #-}+  negate V0 = V0+  {-# INLINE negate #-}+  abs V0 = V0+  {-# INLINE abs #-}+  signum V0 = V0+  {-# INLINE signum #-}+  fromInteger _ = V0+  {-# INLINE fromInteger #-}++instance Fractional (V0 a) where+  recip _ = V0+  {-# INLINE recip #-}+  V0 / V0 = V0+  {-# INLINE (/) #-}+  fromRational _ = V0+  {-# INLINE fromRational #-}++instance Metric V0 where+  dot V0 V0 = 0+  {-# INLINE dot #-}++instance Core V0 where+  core _ = V0+  {-# INLINE core #-}++instance Distributive V0 where+  distribute _ = V0+  {-# INLINE distribute #-}++instance Epsilon a => Epsilon (V0 a) where+  nearZero _ = True+  {-# INLINE nearZero #-}++instance Storable a => Storable (V0 a) where+  sizeOf _ = 0+  {-# INLINE sizeOf #-}+  alignment _ = 1+  {-# INLINE alignment #-}+  poke _ V0 = return ()+  {-# INLINE poke #-}+  peek _ = return V0+  {-# INLINE peek #-}