QIO 1.1 → 1.2
raw patch · 2 files changed
+4/−4 lines, 2 filesdep ~base
Dependency ranges changed: base
Files
- QIO.cabal +1/−1
- QIO/VecEq.hs +3/−3
QIO.cabal view
@@ -1,5 +1,5 @@ Name: QIO-Version: 1.1+Version: 1.2 Cabal-Version: >= 1.2 License: BSD3 License-File: LICENSE
QIO/VecEq.hs view
@@ -16,7 +16,7 @@ -- | Two Vectors can be combined (<+>) :: (Eq a, Num x) => v x a -> v x a -> v x a -- | A Vector can be multiplied by a scalar- (<*>) :: (Num x) => x -> v x a -> v x a+ (<*>) :: (Num x, Eq x) => x -> v x a -> v x a -- | The amplitude of a given element can be accessed (<@>) :: (Eq a, Num x) => a -> v x a -> x -- | The vector can be created from a list of pairs@@ -48,7 +48,7 @@ -- | Scalar multiplcation is achieved by mapping the multiplication over -- each pair in the vector. Multiplication by 0 is a special case, and will -- remove all the basis states from the vector.-vEqTimes :: (Num x) => x -> VecEqL x a -> VecEqL x a+vEqTimes :: (Num x, Eq x) => x -> VecEqL x a -> VecEqL x a l `vEqTimes` (VecEqL bs) | l==0 = VecEqL [] | otherwise = VecEqL (map (\ (b,k) -> (b,l*k)) bs) @@ -76,7 +76,7 @@ eqBind :: (Eq a, Eq b) => m a -> (a -> m b) -> m b -- | Any VecEq over \v\, along with a Numeric tpye \x\ is an EqMonad.-instance (VecEq v, Num x) => EqMonad (v x) where+instance (VecEq v, Num x, Eq x) => EqMonad (v x) where eqReturn a = fromList [(a,1)] eqBind va f = case toList va of ([]) -> vzero