module Text.AlphabetDistance ( distance , norm ) where import Data.Char (toLower) rank :: Char -> Int rank c = 1 + fromEnum (toLower c) - fromEnum 'a' norm :: String -> Float norm "" = 0 norm (c:cs) = (fromIntegral (rank c) + norm cs) / 27 distance :: String -> String -> Float distance "" "" = 0 distance "" s = norm s distance s "" = norm s distance (ca:sa) (cb:sb) = (abs $ fromIntegral (rank ca - rank cb) + distance sa sb) / 27