{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-- | This module lets you tamper with 'Distance' - in other words you can give
--   it whatever phantom type since the constructor is exported.
--
--   The only use for this module is to construct new 'Distance' data when
--   writing 'EditDistance' instances, but be careful not to change the phantom
--   type of existing 'Distance's!
module Language.Distance.Internal (Distance (..)) where

newtype Distance algo = Distance {getDistance :: Int}
    deriving (Eq, Ord, Show)