starfuzz/distance
A module providing distance calculation metrics. Distance calculations compute the number of operational edits (lower values are closer) required to transform one string into another.
Types
Represents distance errors.
pub type HammingError {
DifferentLengths
}
Constructors
-
DifferentLengthsReturned when the two strings compared have different lengths (Hamming requires equal lengths).
Values
pub fn hamming(a: String, b: String) -> Result(Int, HammingError)
Computes the Hamming distance between two strings of equal length. Returns an error if lengths differ.
pub fn levenshtein(a: String, b: String) -> Int
Computes the Levenshtein distance between two strings (minimum insertion, deletion, or substitution edits).
Implemented using a tail-recursive row-state optimization requiring O(m) auxiliary space.
pub fn longest_common_subsequence(a: String, b: String) -> Int
Computes the Longest Common Subsequence length (LCS) between two strings.
Implemented using a tail-recursive row-state optimization requiring O(m) auxiliary space.
pub fn optimal_string_alignment(a: String, b: String) -> Int
Computes the Optimal String Alignment (OSA / Restricted Damerau-Levenshtein) distance.
OSA computes insertions, deletions, substitutions, and adjacent transpositions, but restricts transposition edits to prevent substrings from being edited twice.
Implemented using a tail-recursive double-row carrying optimization requiring O(m) auxiliary space.