X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FVector.hs;h=1aaf78daa42e31ca0eae5e106b52aa3827276882;hb=b5bc0c0bc71915093d0883e2fd923808ada4db6c;hp=a4d3c13585bfba3b0b06a14506c0b025eb3cc3c4;hpb=c3905924154d9a8d56bdc57e2f36fe48b8524eef;p=numerical-analysis.git diff --git a/src/Vector.hs b/src/Vector.hs index a4d3c13..1aaf78d 100644 --- a/src/Vector.hs +++ b/src/Vector.hs @@ -15,12 +15,12 @@ import Data.Vector.Fixed ( N3, N4, Vector(..), - (!), construct, inspect, toList, ) import qualified Data.Vector.Fixed as V ( + eq, foldl, length, map, @@ -81,8 +81,8 @@ instance (Show a, Vector v a) => Show (Vn v a) where -- >>> v1 == v3 -- False -- -instance (Eq a, Vector v a, Vector v Bool) => Eq (Vn v a) where - (Vn v1) == (Vn v2) = V.foldl (&&) True (V.zipWith (==) v1 v2) +instance (Eq a, Vector v a) => Eq (Vn v a) where + (Vn v1) == (Vn v2) = v1 `V.eq` v2 -- | The use of 'Num' here is of course incorrect (otherwise, we @@ -191,6 +191,17 @@ angle v1 v2 = norms = (norm v1) * (norm v2) +-- | Unsafe indexing. +-- +-- Examples: +-- +-- >>> let v1 = make2d (1,2) +-- >>> v1 ! 1 +-- 2 +-- +(!) :: (Vector v a) => v a -> Int -> a +(!) v1 idx = (toList v1) !! idx + -- | Safe indexing. -- -- Examples: