sample-frame-np 0.0.1 → 0.0.2
raw patch · 3 files changed
+70/−7 lines, 3 filesdep ~numeric-prelude
Dependency ranges changed: numeric-prelude
Files
- sample-frame-np.cabal +10/−5
- src/Sound/Frame/NumericPrelude/Stereo.hs +2/−2
- src/Sound/Frame/NumericPrelude/StereoApplicative.hs +58/−0
sample-frame-np.cabal view
@@ -1,5 +1,5 @@ Name: sample-frame-np-Version: 0.0.1+Version: 0.0.2 License: BSD3 License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -9,10 +9,12 @@ Category: Sound Synopsis: Orphan instances for types from sample-frame and numericprelude Description:- Orphan instances for types from sample-frame package- and type classes from numeric-prelude.+ Orphan instances for types from @sample-frame@ package+ and type classes from @numeric-prelude@.+ Using this package instead defining custom orphan instances+ saves you from conflicting instances. .- This is used by packages synthesizer.+ This is used by packages @synthesizer@, @synthesizer-alsa@, @synthesizer-llvm@. Tested-With: GHC==6.10.4 Cabal-Version: >=1.2 Build-Type: Simple@@ -23,7 +25,7 @@ Library Build-Depends: sample-frame >=0.0.1 && <0.1,- numeric-prelude >= 0.1.2 && <0.2+ numeric-prelude >= 0.2 && <0.3 If flag(splitBase) Build-Depends: base >= 2 && <5@@ -38,3 +40,6 @@ Exposed-Modules: Sound.Frame.NumericPrelude.Stereo++ Other-Modules:+ Sound.Frame.NumericPrelude.StereoApplicative
src/Sound/Frame/NumericPrelude/Stereo.hs view
@@ -20,8 +20,8 @@ import qualified NumericPrelude.Elementwise as Elem import Control.Applicative (Applicative(pure), ) -import NumericPrelude-import PreludeBase hiding (map)+import NumericPrelude.Numeric+import NumericPrelude.Base hiding (map) import Prelude ()
+ src/Sound/Frame/NumericPrelude/StereoApplicative.hs view
@@ -0,0 +1,58 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+{- |+Define some instance for NumericPrelude.Numeric type classes+in terms of Applicative and Foldable.+This is more elegant, but maybe not faster.+-}+module Sound.Frame.NumericPrelude.StereoApplicative (T, left, right, cons, map, ) where++import qualified Sound.Frame.Stereo as Stereo+import Sound.Frame.Stereo (T, left, right, cons, map, )++import qualified Algebra.NormedSpace.Maximum as NormedMax+import qualified Algebra.NormedSpace.Euclidean as NormedEuc+import qualified Algebra.NormedSpace.Sum as NormedSum++import qualified Algebra.Module as Module+import qualified Algebra.Algebraic as Algebraic+import qualified Algebra.Additive as Additive++import Control.Applicative (Applicative(pure), liftA2, )++import NumericPrelude.Numeric+import NumericPrelude.Base hiding (map)+import Prelude ()+++instance (Additive.C a) => Additive.C (T a) where+ {-# INLINE zero #-}+ {-# INLINE negate #-}+ {-# INLINE (+) #-}+ {-# INLINE (-) #-}+ zero = pure zero+ (+) = liftA2 (+)+ (-) = liftA2 (-)+ negate = fmap negate++instance (Module.C a v) => Module.C a (T v) where+ {-# INLINE (*>) #-}+ a*>v = fmap (a*>) v+++instance (Additive.C a, NormedSum.C a v) => NormedSum.C a (T v) where+ {-# INLINE norm #-}+ norm = NormedSum.normFoldable1++instance (NormedEuc.Sqr a v) => NormedEuc.Sqr a (T v) where+ {-# INLINE normSqr #-}+ normSqr = NormedEuc.normSqrFoldable1++instance (Algebraic.C a, NormedEuc.Sqr a v) => NormedEuc.C a (T v) where+ {-# INLINE norm #-}+ norm = NormedEuc.defltNorm++instance (Ord a, NormedMax.C a v) => NormedMax.C a (T v) where+ {-# INLINE norm #-}+ norm = NormedMax.normFoldable1