vector-space-map-0.1.0.1: vector-space operations for finite maps using Data.Map

Data.Map.Vector

Synopsis

# Documentation

data MapVector k v Source

Note: `<*>` in the `Applicative` instance operates under intersection. i.e.:

````>>> ````(MapVector \$ Map.fromList [("x", id)]) <*> (MapVector \$ Map.fromList [("y", 3)])
```MapVector (Map.fromList [])
```

`*` in the `Num` instance performs elementwise multiplication. It is defined in terms of `<*>` and therefore also operates under intersection:

````>>> ````(MapVector \$ Map.fromList [("x", 2), ("y", 3)]) * (MapVector \$ Map.fromList [("x", 5),("y", 7)])
```MapVector (Map.fromList [("x", 10), ("y", 21)])
```
````>>> ````(MapVector \$ Map.fromList [("x", 2), ("y", 3)]) * (MapVector \$ Map.fromList [("y", 7)])
```MapVector (Map.fromList [("y", 21)])
```

`*^` in the `VectorSpace` instance multiplies by the scalar of v. Nesting MapVectors preserves the scalar type, e.g. `Scalar (MapVector k (MapVector k' v))` = `Scalar v`.

````>>> ````2 *^ (ConstantMap \$ MapVector \$ Map.fromList [("x", 3 :: Int), ("y", 5)])
```ConstantMap (MapVector (fromList [("x",6),("y",10)]))
```

Finally, `<.>` in `InnerSpace` is the dot-product operator. Again, it operates under intersection.

````>>> ````(MapVector \$ Map.fromList [("x", 2 :: Int), ("y", 3)]) <.> (MapVector \$ Map.fromList [("x", 5),("y", 7)])
```31
```
````>>> ````(pure . MapVector \$ Map.fromList [("x", 2 :: Int), ("y", 3)]) <.> (MapVector \$ Map.fromList [("a", pure (5::Int))])
```25
```

Addition, using either `+` or `^+^`, operates under union.

Constructors

 MapVector (Map k v) ConstantMap v An infinite-dimensional vector with the same value on all dimensions

Instances

 Typeable2 MapVector Functor (MapVector k) Ord k => Applicative (MapVector k) Foldable (MapVector k) Traversable (MapVector k) (Eq k, Eq v) => Eq (MapVector k v) (Data k, Data v, Ord k) => Data (MapVector k v) (Ord k, AdditiveGroup v, Num v) => Num (MapVector k v) (Ord k, Read k, Read v) => Read (MapVector k v) (Show k, Show v) => Show (MapVector k v) (Ord k, VectorSpace v) => VectorSpace (MapVector k v) (Ord k, VectorSpace v, InnerSpace v, AdditiveGroup (Scalar v)) => InnerSpace (MapVector k v) (AdditiveGroup v, Ord k) => AdditiveGroup (MapVector k v)