ms

metric spaces


Keywords
bsd2, library, math, Propose Tags , Math.MetricSpace
License
BSD-3-Clause-Attribution
Install
cabal install ms-0.2.1

Documentation

ms - metric spaces

Build Status

A metric space is a set together with some notion of distance function which obeys four laws. See the haddock for more information.

We implement these not using a typeclass, but using a simple datatype. This avoids needing to create newtypes for every metric implementation over a given type, meaning that we gain more code re-use and an easier-to-use API.

WARNING: The triangle-inequality law does not necessarily hold in the presence of Floating a => a, which we use. This is because Double and Float both don't have arbitrary precision. However, some of our metrics, such as that of euclidean distance, require the use of the sqrt function, which requires a Floating constraint.

Usage

dist levenshtein "foo" "bar"   -- => 3.0
dist euclidean (V.fromList [3,2]) (V.fromList [2,3])  -- => 1.4142135623730951

License

BSD-2.