-- >>> m1 == m3
-- False
--
- (Mat rows1) == (Mat rows2) =
- V.and $ V.zipWith comp rows1 rows2
+ (Mat rows_one) == (Mat rows_two) =
+ V.and $ V.zipWith comp rows_one rows_two
where
-- Compare a row, one column at a time.
comp row1 row2 = V.and (V.zipWith (==) row1 row2)
instance (Ring.C a, Arity m, Arity n) => Additive.C (Mat m n a) where
- (Mat rows1) + (Mat rows2) =
- Mat $ V.zipWith (V.zipWith (+)) rows1 rows2
+ (Mat rows_one) + (Mat rows_two) =
+ Mat $ V.zipWith (V.zipWith (+)) rows_one rows_two
- (Mat rows1) - (Mat rows2) =
- Mat $ V.zipWith (V.zipWith (-)) rows1 rows2
+ (Mat rows_one) - (Mat rows_two) =
+ Mat $ V.zipWith (V.zipWith (-)) rows_one rows_two
zero = Mat (V.replicate $ V.replicate (fromInteger 0))
import qualified Algebra.Additive as Additive ( C )
import qualified Algebra.Field as Field ( C )
import Control.Arrow ( first )
-import Data.Maybe ( catMaybes )
import Misc ( partition )
import NumericPrelude
import qualified Prelude as P
-- point and the result is returned wrapped in a 'Just'. If the
-- point is outside of the domain, 'Nothing' is returned.
evaluate :: Piecewise a -> a -> Maybe a
-evaluate (Piecewise pieces) x =
- foldl f Nothing pieces
+evaluate (Piecewise ps) x =
+ foldl f Nothing ps
where
f (Just y) _ = Just y
f Nothing (p,g) = if p x then Just (g x) else Nothing