algebraic-0.1.0.2: src/Math/Metric/Taxicab.hs
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
module Math.Metric.Taxicab where
import Math.Metric.Metric (Metric(..), MetricCoord(..))
import Math.Coordinate.Cartesian (Cartesian(..), Point2(..))
data Taxicab = Taxicab deriving Show
--------------------------------------------------------------------------------
-- Instances
--------------------------------------------------------------------------------
instance MetricCoord Taxicab Cartesian where
metricCoord _ = Cartesian
instance Num a => Metric Taxicab (Point2 a) a where
distanceBase _ (Point2 x1 y1) (Point2 x2 y2) = abs (x2 - x1) + abs (y2 - y1)