numhask 0.0.3 → 0.0.4
raw patch · 10 files changed
+19/−116 lines, 10 files
Files
- numhask.cabal +1/−2
- src/NumHask/Algebra.hs +0/−28
- src/NumHask/Algebra/Metric.hs +1/−1
- src/NumHask/Examples.hs +1/−0
- src/NumHask/Matrix.hs +1/−3
- src/NumHask/Naperian.hs +3/−2
- src/NumHask/Prelude.hs +1/−25
- src/NumHask/Tensor.hs +4/−9
- src/NumHask/Vector.hs +1/−4
- test/test.hs +6/−42
numhask.cabal view
@@ -1,7 +1,7 @@ name: numhask version:- 0.0.3+ 0.0.4 synopsis: A numeric prelude description:@@ -38,7 +38,6 @@ exposed-modules: NumHask.Prelude, NumHask.Examples,- NumHask.Algebra, NumHask.Algebra.Additive, NumHask.Algebra.Basis, NumHask.Algebra.Distribution,
− src/NumHask/Algebra.hs
@@ -1,28 +0,0 @@--- | Just the numeric tower bits of NumHask--module NumHask.Algebra- ( -- * Algebraic Heirarchy- module NumHask.Algebra.Additive- , module NumHask.Algebra.Basis- , module NumHask.Algebra.Distribution- , module NumHask.Algebra.Field- , module NumHask.Algebra.Integral- , module NumHask.Algebra.Magma- , module NumHask.Algebra.Metric- , module NumHask.Algebra.Module- , module NumHask.Algebra.Multiplicative- , module NumHask.Algebra.Ordering- , module NumHask.Algebra.Ring- ) where--import NumHask.Algebra.Additive-import NumHask.Algebra.Basis-import NumHask.Algebra.Distribution-import NumHask.Algebra.Field-import NumHask.Algebra.Integral-import NumHask.Algebra.Magma-import NumHask.Algebra.Metric-import NumHask.Algebra.Module-import NumHask.Algebra.Multiplicative-import NumHask.Algebra.Ordering-import NumHask.Algebra.Ring
src/NumHask/Algebra/Metric.hs view
@@ -20,7 +20,7 @@ -- | abs and signnum are warts on the standard 'Num' class, and are separated here to provide a cleaner structure. class ( AdditiveUnital a , AdditiveGroup a- , Multiplicative a+ , MultiplicativeUnital a ) => Signed a where sign :: a -> a abs :: a -> a
src/NumHask/Examples.hs view
@@ -112,6 +112,7 @@ -- $vector -- A 'Vector' is a number by virtue of it being a 'Representable' 'Functor' where the representation is an 'Int'. --+-- >>> import NumHask.Vector -- >>> :set -XDataKinds -- >>> :set -XOverloadedLists -- >>> [] :: Vector 3 Int
src/NumHask/Matrix.hs view
@@ -29,13 +29,11 @@ ) where import qualified Protolude as P-import Protolude- (($), Functor(..), Show, Eq(..), (.), (<$>), Foldable(..), Int, Maybe(..)) import Data.Distributive as D import Data.Functor.Rep import Data.Proxy (Proxy(..)) import GHC.TypeLits-import NumHask.Algebra+import NumHask.Prelude hiding (show) import NumHask.Naperian import NumHask.Vector import Test.QuickCheck
src/NumHask/Naperian.hs view
@@ -5,13 +5,14 @@ module NumHask.Naperian ( Naperian , HasShape(..)+ , module Data.Functor.Rep ) where import Protolude (Int, foldr, Foldable(..), ($), (<$>), fmap, fst, snd, or, and) import Data.Functor.Rep-import NumHask.Algebra+import NumHask.Prelude --- | ToDo: integrate ni Naperian instance+-- | ToDo: integrate with Naperian instance class HasShape f where type Shape f shape :: f a -> Shape f
src/NumHask/Prelude.hs view
@@ -7,8 +7,6 @@ -- * Backend -- $backend module Protolude- , module Data.Distributive- , module Data.Functor.Rep -- * Algebraic Heirarchy -- $instances , module NumHask.Algebra.Additive@@ -22,12 +20,6 @@ , module NumHask.Algebra.Multiplicative , module NumHask.Algebra.Ordering , module NumHask.Algebra.Ring- -- * Representations- -- $representables- , module NumHask.Matrix- , module NumHask.Tensor- , module NumHask.Vector- , module NumHask.Naperian ) where import Protolude hiding@@ -72,14 +64,6 @@ import NumHask.Algebra.Ordering import NumHask.Algebra.Ring -import NumHask.Matrix-import NumHask.Tensor-import NumHask.Vector-import NumHask.Naperian--import Data.Distributive-import Data.Functor.Rep- -- $backend -- NumHask imports Protolude as the prelude and replaces much of the 'Num' heirarchy in base. -- Usage of 'Semigroup' and 'Monoid' has been avoided to retain basic compatability.@@ -87,13 +71,5 @@ -- $instances -- Re-defines the numeric tower. ----- Instances for 'Int', 'Integer', 'Float', 'Double', 'Bool' and 'Representable' Functors are supplied------- $representables--- Different classes are supplied for holding shape information at the type level and value level.------ Value-level classes are not (yet) wired in to the Algebra------ Type-level shaped numbers are wired in via the 'Representable' 'Functor' instances.+-- Instances for 'Int', 'Integer', 'Float', 'Double', 'Bool' and 'Complex' are supplied --
src/NumHask/Tensor.hs view
@@ -19,23 +19,18 @@ , flatten1 ) where -import qualified Protolude as P-import Protolude- (($), (<$>), Functor(..), Show, Eq(..), (.), Maybe(..), Int, reverse, foldr, fst, zipWith, scanr, drop, sum, product, Foldable(..))- import Data.Distributive as D-import Data.Functor.Rep import Data.Singletons import Data.Singletons.Prelude import GHC.Exts import GHC.Show import GHC.TypeLits-import NumHask.Algebra.Additive-import NumHask.Algebra.Integral-import NumHask.Algebra.Multiplicative+import NumHask.Naperian+import NumHask.Prelude hiding (show) import Test.QuickCheck+ import qualified Data.Vector as V-import NumHask.Naperian+import qualified Protolude as P -- | an n-dimensional array where shape is specified at the type level -- The main purpose of this, beyond safe typing, is to supply the Representable instance with an initial object.
src/NumHask/Vector.hs view
@@ -17,16 +17,13 @@ ) where import qualified Protolude as P-import Protolude- (($), (<$>), Functor(..), Show, Eq(..), take, Foldable(..), Ord(..), Int, Maybe(..), (.))- import Data.Distributive as D import Data.Functor.Rep import Data.Proxy (Proxy(..)) import GHC.Exts import GHC.Show (show) import GHC.TypeLits-import NumHask.Algebra+import NumHask.Prelude hiding (show) import NumHask.Naperian import Test.QuickCheck import qualified Data.Vector as V
test/test.hs view
@@ -5,6 +5,10 @@ module Main where import NumHask.Prelude+import NumHask.Vector+import NumHask.Matrix+import NumHask.Tensor+import NumHask.Naperian import Test.Tasty (TestName, TestTree, testGroup, defaultMain, localOption) import Test.Tasty.QuickCheck@@ -510,9 +514,7 @@ kindaPositive a = nearZero a || a > zero metricNaperianFloatLaws ::- ( Naperian r- , Metric (r Float) Float- , Foldable r+ ( Metric (r Float) Float ) => [Law (r Float)] metricNaperianFloatLaws = [ ( "positive"@@ -617,9 +619,7 @@ ] expFieldNaperianLaws ::- ( Naperian r- , Additive (r a)- , ExpField (r a)+ ( ExpField (r a) , Foldable r , ExpField a , Epsilon a@@ -647,11 +647,8 @@ additiveModuleLaws :: ( Eq (r a)- , Naperian r- , Additive (r a) , Epsilon a , Epsilon (r a)- , Foldable r , AdditiveModule r a ) => [Law2 (r a) a] additiveModuleLaws =@@ -670,7 +667,6 @@ ( Eq (r a) , Show a , Arbitrary a- , Naperian r , Show (r a) , Arbitrary (r a) , Epsilon a@@ -693,10 +689,7 @@ ( Eq (r a) , Epsilon a , Epsilon (r a)- , Foldable r , Naperian r- , Additive (r a)- , AdditiveGroup (r a) , AdditiveGroupModule r a ) => [Law2 (r a) a] additiveGroupModuleLaws =@@ -721,10 +714,7 @@ , Arbitrary (r a) , Epsilon a , Epsilon (r a)- , Foldable r , Naperian r- , Additive (r a)- , AdditiveGroup (r a) , AdditiveGroupModule r a ) => [Law2 (r a) a] additiveGroupModuleLawsFail =@@ -745,11 +735,7 @@ ( Eq (r a) , Epsilon a , Epsilon (r a)- , Foldable r- , Naperian r- , Additive (r a) , Multiplicative (r a)- , AdditiveModule r a , MultiplicativeModule r a ) => [Law2 (r a) a] multiplicativeModuleLaws =@@ -776,11 +762,7 @@ , Arbitrary a , Show (r a) , Arbitrary (r a)- , Foldable r- , Naperian r- , Additive (r a) , Multiplicative (r a)- , AdditiveModule r a , MultiplicativeModule r a ) => [Law2 (r a) a] multiplicativeModuleLawsFail =@@ -804,10 +786,7 @@ , Eq a , Epsilon a , Epsilon (r a)- , Foldable r , Naperian r- , AdditiveUnital (r a)- , Multiplicative (r a) , MultiplicativeGroup (r a) , MultiplicativeGroupModule r a ) => [Law2 (r a) a]@@ -834,10 +813,6 @@ , Arbitrary (r a) , Epsilon a , Epsilon (r a)- , Foldable r- , Naperian r- , AdditiveUnital (r a)- , Multiplicative (r a) , MultiplicativeGroup (r a) , MultiplicativeGroupModule r a ) => [Law2 (r a) a]@@ -860,11 +835,7 @@ additiveBasisLaws :: ( Eq (r a)- , Foldable r- , Epsilon a , Epsilon (r a)- , Naperian r- , AdditiveUnital (r a) , AdditiveBasis r a ) => [Law (r a)] additiveBasisLaws =@@ -879,11 +850,7 @@ ( Eq (r a) , Arbitrary (r a) , Show (r a)- , Foldable r- , Epsilon a- , Naperian r , Epsilon (r a)- , AdditiveUnital (r a) , AdditiveBasis r a ) => [Law (r a)] additiveBasisLawsFail =@@ -905,7 +872,6 @@ multiplicativeBasisLaws :: ( Eq (r a)- , Naperian r , Multiplicative (r a) , MultiplicativeBasis r a ) => [Law (r a)]@@ -921,7 +887,6 @@ ( Eq (r a) , Show (r a) , Arbitrary (r a)- , Naperian r , Multiplicative (r a) , MultiplicativeBasis r a ) => [Law (r a)]@@ -937,7 +902,6 @@ ( Eq (r a) , Epsilon a , Epsilon (r a)- , Foldable r , Naperian r , MultiplicativeGroupBasis r a ) => [Law (r a)]