numeric-prelude-0.4.3: An experimental alternative hierarchy of numeric type classes

Number.Physical.Unit

Description

Abstract Physical Units

Synopsis

Documentation

type T i = Map i Int Source #

A Unit.T is a sparse vector with integer entries Each map n->m means that the unit of the n-th dimension is given m times.

Example: Let the quantity of length (meter, m) be the zeroth dimension and let the quantity of time (second, s) be the first dimension, then the composed unit m/s^2 corresponds to the Map [(0,1),(1,-2)].

In future I want to have more abstraction here, e.g. a type class from the Edison project that abstracts from the underlying implementation. Then one can easily switch between Arrays, Binary trees (like Map) and what know I.

The neutral Unit.T

isScalar :: T i -> Bool Source #

Test for the neutral Unit.T

fromVector :: (Enum i, Ord i) => [Int] -> T i Source #

Convert a List to sparse Map representation Example: [-1,0,-2] -> [(0,-1),(2,-2)]

toVector :: (Enum i, Ord i) => T i -> [Int] Source #

Convert Map to a List

ratScale :: T Int -> T i -> T i Source #

ratScaleMaybe :: T Int -> T i -> Maybe (T i) Source #