Computing the edit distances between strings
 data Costs a
 = ConstantCost !Int
  VariableCost (a > Int)
 data EditCosts = EditCosts {
 deletionCosts :: Costs Char
 insertionCosts :: Costs Char
 substitutionCosts :: Costs (Char, Char)
 transpositionCosts :: Costs (Char, Char)
 defaultEditCosts :: EditCosts
 levenshteinDistance :: EditCosts > String > String > Int
 restrictedDamerauLevenshteinDistance :: EditCosts > String > String > Int
Documentation
ConstantCost !Int  
VariableCost (a > Int) 
EditCosts  

levenshteinDistance :: EditCosts > String > String > IntSource
Find the Levenshtein edit distance between two strings. That is to say, the number of deletion,
insertion and substitution operations that are required to make the two strings equal. Note that
this algorithm therefore does not make use of the transpositionCost
field of the costs. See also:
http://en.wikipedia.org/wiki/Levenshtein_distance.
restrictedDamerauLevenshteinDistance :: EditCosts > String > String > IntSource
Find the restricted DamerauLevenshtein edit distance between two strings. This algorithm calculates the cost of the socalled optimal string alignment, which does not always equal the appropriate edit distance. The cost of the optimal string alignment is the number of edit operations needed to make the input strings equal under the condition that no substring is edited more than once. See also: http://en.wikipedia.org/wiki/DamerauLevenshtein_distance.